gowalla 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/gowalla.rb CHANGED
@@ -2,6 +2,7 @@ require 'hashie'
2
2
  require 'faraday'
3
3
  require 'multi_json'
4
4
  require 'oauth2'
5
+ require 'faraday_middleware'
5
6
 
6
7
  directory = File.expand_path(File.dirname(__FILE__))
7
8
 
@@ -9,7 +10,7 @@ Hash.send :include, Hashie::HashExtensions
9
10
 
10
11
  module Gowalla
11
12
 
12
- VERSION = "0.2.0".freeze
13
+ VERSION = "0.2.1".freeze
13
14
 
14
15
  # config/initializers/gowalla.rb (for instance)
15
16
  #
@@ -15,6 +15,7 @@ module Gowalla
15
15
  @access_token = options[:access_token]
16
16
  password = options[:password] || Gowalla.password
17
17
  connection.basic_auth(@username, password) unless @api_secret
18
+ connection.token_auth(@access_token) if @access_token
18
19
  end
19
20
 
20
21
  # Retrieve information about a specific user
@@ -23,7 +24,7 @@ module Gowalla
23
24
  # @return [Hashie::Mash] User info
24
25
  def user(user_id=nil)
25
26
  user_id ||= username
26
- handle_response(connection.get("/users/#{user_id}"))
27
+ connection.get("/users/#{user_id}").body
27
28
  end
28
29
 
29
30
  # Retrieve information about a specific item
@@ -31,7 +32,7 @@ module Gowalla
31
32
  # @param [Integer] id Item ID
32
33
  # @return [Hashie::Mash] item info
33
34
  def item(id)
34
- handle_response(connection.get("/items/#{id}"))
35
+ connection.get("/items/#{id}").body
35
36
  end
36
37
 
37
38
  # Retrieve a list of the stamps the user has collected
@@ -43,7 +44,7 @@ module Gowalla
43
44
  response = connection.get do |req|
44
45
  req.url "/users/#{user_id}/stamps", :limit => limit
45
46
  end
46
- handle_response(response).stamps
47
+ response.body.stamps
47
48
  end
48
49
 
49
50
  # Retrieve a list of spots the user has visited most often
@@ -51,7 +52,7 @@ module Gowalla
51
52
  # @param [String] user_id (authenticated basic auth user) User ID (screen name)
52
53
  # @return [Hashie::Mash] item info
53
54
  def top_spots(user_id=self.username)
54
- handle_response(connection.get("/users/#{user_id}/top_spots")).top_spots
55
+ connection.get("/users/#{user_id}/top_spots").body.top_spots
55
56
  end
56
57
 
57
58
  # Retrieve information about a specific trip
@@ -59,7 +60,7 @@ module Gowalla
59
60
  # @param [Integer] trip_id Trip ID
60
61
  # @return [Hashie::Mash] trip info
61
62
  def trip(trip_id)
62
- handle_response(connection.get("/trips/#{trip_id}"))
63
+ connection.get("/trips/#{trip_id}").body
63
64
  end
64
65
 
65
66
  # Retrieve information about a specific spot
@@ -67,7 +68,7 @@ module Gowalla
67
68
  # @param [Integer] spot_id Spot ID
68
69
  # @return [Hashie::Mash] Spot info
69
70
  def spot(spot_id)
70
- handle_response(connection.get("/spots/#{spot_id}"))
71
+ connection.get("/spots/#{spot_id}").body
71
72
  end
72
73
 
73
74
  # Retrieve a list of check-ins at a particular spot. Shows only the activity that is visible to a given user.
@@ -75,7 +76,7 @@ module Gowalla
75
76
  # @param [Integer] spot_id Spot ID
76
77
  # @return [Hashie::Mash] Spot info
77
78
  def spot_events(spot_id)
78
- handle_response(connection.get("/spots/#{spot_id}/events")).activity
79
+ connection.get("/spots/#{spot_id}/events").body.activity
79
80
  end
80
81
 
81
82
  # Retrieve a list of items available at a particular spot
@@ -83,7 +84,7 @@ module Gowalla
83
84
  # @param [Integer] spot_id Spot ID
84
85
  # @return [Hashie::Mash] Spot info
85
86
  def spot_items(spot_id)
86
- handle_response(connection.get("/spots/#{spot_id}/items")).items
87
+ connection.get("/spots/#{spot_id}/items").body.items
87
88
  end
88
89
 
89
90
  # Retrieve a list of spots within a specified distance of a location
@@ -97,7 +98,7 @@ module Gowalla
97
98
  response = connection.get do |req|
98
99
  req.url "/spots", query
99
100
  end
100
- handle_response(response).spots
101
+ response.body.spots
101
102
  end
102
103
 
103
104
  # List of trips
@@ -111,14 +112,14 @@ module Gowalla
111
112
  response = connection.get do |req|
112
113
  req.url "/trips", query
113
114
  end
114
- handle_response(response).trips
115
+ response.body.trips
115
116
  end
116
117
 
117
118
  # Lists all spot categories
118
119
  #
119
120
  # @return [<Hashie::Mash>] category info
120
121
  def categories
121
- handle_response(connection.get("/categories")).spot_categories
122
+ connection.get("/categories").body.spot_categories
122
123
  end
123
124
 
124
125
  # Retrieve information about a specific category
@@ -126,7 +127,7 @@ module Gowalla
126
127
  # @param [Integer] id Category ID
127
128
  # @return [Hashie::Mash] category info
128
129
  def category(id)
129
- handle_response(connection.get("/categories/#{id}"))
130
+ connection.get("/categories/#{id}").body
130
131
  end
131
132
 
132
133
  # Check for missing access token
@@ -136,20 +137,19 @@ module Gowalla
136
137
  @api_secret and @access_token.to_s == ''
137
138
  end
138
139
 
139
- # Raw HTTP connection, either Faraday::Connection or OAuth2::AccessToken
140
+ # Raw HTTP connection, either Faraday::Connection
140
141
  #
141
- # @return [OAuth2::Client]
142
+ # @return [Faraday::Connection]
142
143
  def connection
143
-
144
- if api_secret
145
- @connection ||= OAuth2::AccessToken.new(oauth_client, @access_token)
146
- else
147
- headers = default_headers
148
- headers['X-Gowalla-API-Key'] = api_key if api_key
149
- @connection ||= Faraday::Connection.new \
150
- :url => "http://api.gowalla.com",
151
- :headers => headers
144
+ url = @access_token ? "https://api.gowalla.com" : "http://api.gowalla.com"
145
+ params = {}
146
+ params[:access_token] = @access_token if @access_token
147
+ @connection ||= Faraday::Connection.new(:url => url, :params => params, :headers => default_headers) do |builder|
148
+ builder.adapter Faraday.default_adapter
149
+ builder.use Faraday::Response::MultiJson
150
+ builder.use Faraday::Response::Mashify
152
151
  end
152
+
153
153
  end
154
154
 
155
155
  # Provides raw access to the OAuth2 Client
@@ -189,28 +189,11 @@ module Gowalla
189
189
  def default_headers
190
190
  headers = {
191
191
  :accept => 'application/json',
192
- :user_agent => 'Ruby gem'
192
+ :user_agent => 'Ruby gem',
193
+ 'X-Gowalla-API-Key' => api_key
193
194
  }
194
195
  end
195
196
 
196
- # @private
197
- def handle_response(response)
198
- case response.status
199
- when 200
200
- body = response.respond_to?(:body) ? response.body : response
201
- data = MultiJson.decode(body)
202
- if data.is_a?(Hash)
203
- Hashie::Mash.new(data)
204
- else
205
- if data.first.is_a?(Hash)
206
- data.map{|item| Hashie::Mash.new(item)}
207
- else
208
- data
209
- end
210
- end
211
- end
212
- end
213
-
214
197
 
215
198
  end
216
199
 
data/test/gowalla_test.rb CHANGED
@@ -154,10 +154,6 @@ class GowallaTest < Test::Unit::TestCase
154
154
  @client.oauth_client.class.to_s.should == "OAuth2::Client"
155
155
  end
156
156
 
157
- should "create an OAuth2 connection" do
158
- @client.connection.class.to_s.should == "OAuth2::AccessToken"
159
- end
160
-
161
157
  should "indicate if it needs an access_token" do
162
158
  @client.needs_access?.should == true
163
159
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Wynn Netherland
@@ -73,6 +73,18 @@ dependencies:
73
73
  type: :runtime
74
74
  - !ruby/object:Gem::Dependency
75
75
  version_requirements: &id005 !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ name: faraday-middleware
83
+ prerelease: false
84
+ requirement: *id005
85
+ type: :runtime
86
+ - !ruby/object:Gem::Dependency
87
+ version_requirements: &id006 !ruby/object:Gem::Requirement
76
88
  requirements:
77
89
  - - ~>
78
90
  - !ruby/object:Gem::Version
@@ -83,7 +95,7 @@ dependencies:
83
95
  version: 2.10.0
84
96
  name: shoulda
85
97
  prerelease: false
86
- requirement: *id005
98
+ requirement: *id006
87
99
  type: :development
88
100
  description: Ruby wrapper for the Gowalla API
89
101
  email: wynn.netherland@gmail.com