foursquare-oauth 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/Rakefile +44 -36
  2. data/lib/foursquare.rb +92 -54
  3. metadata +12 -11
data/Rakefile CHANGED
@@ -4,49 +4,57 @@ require 'rubygems/specification'
4
4
  require 'date'
5
5
  require 'spec/rake/spectask'
6
6
 
7
- spec = Gem::Specification.new do |s|
8
- s.name = "foursquare-oauth"
9
- s.version = '0.2.2'
10
- s.authors = ['Jeremy Welch', 'Thomas Hanley', 'Elise Wood']
11
- s.email = "hello@jeremyrwelch.com"
12
- s.homepage = "http://github.com/glytch/Foursquare"
13
- s.description = s.summary = "A simple Ruby wrapper for the Foursquare API"
14
- s.post_install_message = "NOTE: This version of the Foursquare Gem has significant changes to the way methods are called. Please review the examples in the README"
15
-
16
- s.platform = Gem::Platform::RUBY
17
- s.has_rdoc = true
18
- s.extra_rdoc_files = ["README.rdoc", "History"]
19
-
20
- s.require_path = 'lib'
21
- s.autorequire = 'foursquare'
22
- s.files = %w(README.rdoc Rakefile History) + Dir.glob("{lib,spec,script,examples}/**/*")
23
-
24
- s.add_dependency('httparty', '0.4.3')
25
- s.add_dependency('oauth', '0.3.6')
26
- s.add_dependency('hashie', '0.1.5')
27
- end
7
+ begin
8
+ require 'jeweler'
9
+ Jeweler::Tasks.new do |s|
10
+ s.name = "foursquare-oauth"
11
+ s.version = '0.2.3'
12
+ s.authors = ['Jeremy Welch', 'Thomas Hanley', 'Elise Wood']
13
+ s.email = "hello@jeremyrwelch.com"
14
+ s.homepage = "http://github.com/glytch/Foursquare"
15
+ s.description = s.summary = "A simple Ruby wrapper for the Foursquare API"
16
+ s.post_install_message = "NOTE: This version of the Foursquare Gem has significant changes to the way methods are called. Please review the examples in the README"
17
+
18
+ s.platform = Gem::Platform::RUBY
19
+ s.has_rdoc = true
20
+ s.extra_rdoc_files = ["README.rdoc", "History"]
21
+
22
+ s.require_path = 'lib'
23
+ s.autorequire = 'foursquare'
24
+ s.files = %w(README.rdoc Rakefile History) + Dir.glob("{lib,spec,script,examples}/**/*")
28
25
 
29
- task :default => :spec
26
+ s.add_dependency('httparty', '0.5.0')
27
+ s.add_dependency('oauth', '0.3.6')
28
+ s.add_dependency('hashie', '0.1.5')
29
+ end
30
+ rescue LoadError
31
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
32
+ end
30
33
 
31
- desc "Run specs"
32
34
  Spec::Rake::SpecTask.new do |t|
33
35
  t.spec_files = FileList['spec/**/*_spec.rb']
34
- t.spec_opts = %w(-fs --color)
35
36
  end
36
37
 
37
-
38
- Rake::GemPackageTask.new(spec) do |pkg|
39
- pkg.gem_spec = spec
38
+ desc "Run all examples with RCov"
39
+ Spec::Rake::SpecTask.new('rcov') do |t|
40
+ t.spec_files = FileList['spec/**/*_spec.rb']
41
+ t.rcov = true
40
42
  end
41
43
 
42
- desc "install the gem locally"
43
- task :install => [:package] do
44
- sh %{sudo gem install pkg/#{GEM}-#{GEM_VERSION}}
44
+ desc 'Confirm that gemspec is $SAFE'
45
+ task :safe do
46
+ require 'yaml'
47
+ require 'rubygems/specification'
48
+ data = File.read('rack-oauth.gemspec')
49
+ spec = nil
50
+ if data !~ %r{!ruby/object:Gem::Specification}
51
+ Thread.new { spec = eval("$SAFE = 3\n#{data}") }.join
52
+ else
53
+ spec = YAML.load(data)
54
+ end
55
+ spec.validate
56
+ puts spec
57
+ puts "OK"
45
58
  end
46
59
 
47
- desc "create a gemspec file"
48
- task :make_spec do
49
- File.open("foursquare.gemspec", "w") do |file|
50
- file.puts spec.to_ruby
51
- end
52
- end
60
+ task :default => :spec
data/lib/foursquare.rb CHANGED
@@ -3,10 +3,6 @@ require 'httparty'
3
3
  require 'hashie'
4
4
  require 'oauth'
5
5
 
6
- Hash.send :include, Hashie::HashExtensions
7
-
8
-
9
-
10
6
  module Foursquare
11
7
  class OAuth
12
8
  def initialize(ctoken, csecret, options={})
@@ -84,23 +80,23 @@ module Foursquare
84
80
  # the right side of the assignment operator. So there are some wrapper methods below
85
81
  # for POSTs that make sure it gets turned into a hashie
86
82
  #
87
- def method_missing(method_symbol, params = {})
88
- method_name = method_symbol.to_s.split(/\.|_/).join('/')
89
-
90
- if (method_name[-1,1]) == '='
91
- method = method_name[0..-2]
92
- result = post(api_url(method), params)
93
- params.replace(result[method] || result)
94
- else
95
- result = get(api_url(method_name, params))
96
- result[method_name] || result
97
- end
98
- end
99
-
100
- def api(method_symbol, params = {})
101
- Hashie::Mash.new(method_missing(method_symbol, params))
102
- end
103
-
83
+ # def method_missing(method_symbol, params = {})
84
+ # method_name = method_symbol.to_s.split(/\.|_/).join('/')
85
+ #
86
+ # if (method_name[-1,1]) == '='
87
+ # method = method_name[0..-2]
88
+ # result = post(api_url(method), params)
89
+ # params.replace(result[method] || result)
90
+ # else
91
+ # result = get(api_url(method_name, params))
92
+ # result[method_name] || result
93
+ # end
94
+ # end
95
+ #
96
+ # def api(method_symbol, params = {})
97
+ # Hashie::Mash.new(method_missing(method_symbol, params))
98
+ # end
99
+ #
104
100
  def api_url(method_name, options = nil)
105
101
  params = options.is_a?(Hash) ? to_query_params(options) : options
106
102
  params = nil if params and params.blank?
@@ -112,89 +108,131 @@ module Foursquare
112
108
 
113
109
  def parse_response(response)
114
110
  raise_errors(response)
115
- Crack::JSON.parse(response.body)
111
+
112
+ Hashie::Mash.new(Yajl::Parser.parse(response.body))
116
113
  end
117
114
 
118
115
  def to_query_params(options)
119
- options.collect { |key, value| "#{key}=#{value}" }.join('&')
116
+ options.map{|key, value| "#{key}=#{value}"}.join('&')
120
117
  end
121
118
 
122
- def get(url)
123
- parse_response(@oauth.access_token.get(url))
119
+ def get(url, params)
120
+ parse_response(@oauth.access_token.get(api_url(url, params)))
124
121
  end
125
122
 
126
123
  def post(url, body)
127
- parse_response(@oauth.access_token.post(url, body))
124
+ parse_response(@oauth.access_token.post(api_url(url), body))
128
125
  end
129
126
 
130
127
  # API method wrappers
131
128
 
129
+ # Check in methods
130
+
131
+ def checkins(params = {})
132
+ get('/checkins', params).checkins
133
+ end
134
+
132
135
  def checkin(params = {})
133
- api(:checkin=, params).checkin
136
+ post('/checkin', params).checkin
134
137
  end
135
138
 
136
139
  def history(params = {})
137
- api(:history, params).checkins
140
+ get('/history', params).checkins
141
+ end
142
+
143
+ # User methods
144
+
145
+ def user(params = {})
146
+ get('/user', params).user
138
147
  end
139
148
 
140
- def addvenue(params = {})
141
- api(:addvenue=, params).venue
149
+ def friends(params = {})
150
+ get('/friends', params).friends
142
151
  end
143
152
 
144
- def venue_proposeedit(params = {})
145
- api(:venue_proposeedit=, params)
153
+ # Venue methods
154
+
155
+ def venues(params = {})
156
+ get('/venues', params).venues
157
+ end
158
+
159
+ def venue(params = P)
160
+ get('/venue', params).venue
161
+ end
162
+
163
+ def categories
164
+ get('/categories', params).categories
165
+ end
166
+
167
+ def add_venue(params = {})
168
+ post('/addvenue', params).venue
169
+ end
170
+
171
+ def venue_propose_edit(params = {})
172
+ post('/venue/proposeedit', params)
173
+ end
174
+
175
+ def venue_flag_closed(params = {})
176
+ post('/venue/flagclosed', params)
146
177
  end
147
178
 
148
- def venue_flagclosed(params = {})
149
- api(:venue_flagclosed=, params)
179
+ # Tip methods
180
+
181
+ def tips(params = {})
182
+ get('/tips', params).tips
150
183
  end
151
184
 
152
- def addtip(params = {})
153
- api(:addtip=, params).tip
185
+ def add_tip(params = {})
186
+ post('/addtip', params).tip
154
187
  end
155
188
 
156
- def tip_marktodo(params = {})
157
- api(:tip_marktodo=, params).tip
189
+ def tip_mark_todo(params = {})
190
+ post('/tip/marktodo', params).tip
158
191
  end
159
192
 
160
- def tip_markdone(params = {})
161
- api(:tip_markdone=, params).tip
193
+ def tip_mark_done(params = {})
194
+ post('/tip/markdone', params).tip
162
195
  end
163
196
 
197
+ # Friend methods
198
+
164
199
  def friend_requests
165
- api(:friend_requests).requests
200
+ get('/friend/requests').requests
166
201
  end
167
202
 
168
203
  def friend_approve(params = {})
169
- api(:friend_approve=, params).user
204
+ post('/friend/approve', params).user
170
205
  end
171
206
 
172
207
  def friend_deny(params = {})
173
- api(:friend_deny=, params).user
208
+ post('/friend/deny', params).user
174
209
  end
175
210
 
176
- def friend_sendrequest(params = {})
177
- api(:friend_sendrequest=, params).user
211
+ def friend_send_request(params = {})
212
+ post('/friend/sendrequest', params).user
178
213
  end
179
214
 
180
- def findfriends_byname(params = {})
181
- api(:findfriends_byname, params).users
215
+ def friends_by_name(params = {})
216
+ post('/findfriends/byname', params).users
182
217
  end
183
218
 
184
- def findfriends_byphone(params = {})
185
- api(:findfriends_byphone, params).users
219
+ def friends_by_phone(params = {})
220
+ get('/findfriends/byphone', params).users
186
221
  end
187
222
 
188
- def findfriends_bytwitter(params = {})
189
- api(:findfriends_bytwitter, params).users
223
+ def friends_by_twitter(params = {})
224
+ get('/findfriends/bytwitter', params).users
190
225
  end
191
226
 
192
- def settings_setpings(params = {})
193
- api(:settings_setpings=, params).settings
227
+ def settings_set_pings(params = {})
228
+ post('/settings/setpings', params).settings
194
229
  end
195
230
 
196
- private
231
+ def test(params = {})
232
+ get('/test', params)
233
+ end
197
234
 
235
+ private
198
236
 
199
237
  def raise_errors(response)
200
238
  message = "(#{response.code}): #{response.message} - #{response.inspect} - #{response.body}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foursquare-oauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Welch
@@ -11,7 +11,7 @@ autorequire: foursquare
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2010-03-08 00:00:00 -06:00
14
+ date: 2010-03-09 00:00:00 -06:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -22,7 +22,7 @@ dependencies:
22
22
  requirements:
23
23
  - - "="
24
24
  - !ruby/object:Gem::Version
25
- version: 0.4.3
25
+ version: 0.5.0
26
26
  version:
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: oauth
@@ -51,24 +51,24 @@ executables: []
51
51
  extensions: []
52
52
 
53
53
  extra_rdoc_files:
54
- - README.rdoc
55
54
  - History
55
+ - README.rdoc
56
56
  files:
57
+ - History
57
58
  - README.rdoc
58
59
  - Rakefile
59
- - History
60
60
  - lib/foursquare.rb
61
- - spec/foursquare_spec.rb
62
- - spec/spec_helper.rb
63
61
  - script/destroy
64
62
  - script/generate
63
+ - spec/foursquare_spec.rb
64
+ - spec/spec_helper.rb
65
65
  has_rdoc: true
66
66
  homepage: http://github.com/glytch/Foursquare
67
67
  licenses: []
68
68
 
69
69
  post_install_message: "NOTE: This version of the Foursquare Gem has significant changes to the way methods are called. Please review the examples in the README"
70
- rdoc_options: []
71
-
70
+ rdoc_options:
71
+ - --charset=UTF-8
72
72
  require_paths:
73
73
  - lib
74
74
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -90,5 +90,6 @@ rubygems_version: 1.3.5
90
90
  signing_key:
91
91
  specification_version: 3
92
92
  summary: A simple Ruby wrapper for the Foursquare API
93
- test_files: []
94
-
93
+ test_files:
94
+ - spec/foursquare_spec.rb
95
+ - spec/spec_helper.rb