instagram-continued 1.3.0 → 1.3.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +11 -0
- data/.travis.yml +1 -0
- data/README.md +1 -1
- data/Rakefile +12 -11
- data/instagram-continued.gemspec +6 -5
- data/lib/faraday/loud_logger.rb +47 -48
- data/lib/faraday/oauth2.rb +16 -18
- data/lib/faraday/raise_http_exception.rb +9 -9
- data/lib/instagram.rb +8 -8
- data/lib/instagram/api.rb +4 -4
- data/lib/instagram/client.rb +1 -1
- data/lib/instagram/client/comments.rb +5 -5
- data/lib/instagram/client/embedding.rb +9 -9
- data/lib/instagram/client/likes.rb +5 -5
- data/lib/instagram/client/locations.rb +4 -4
- data/lib/instagram/client/media.rb +3 -3
- data/lib/instagram/client/subscriptions.rb +27 -27
- data/lib/instagram/client/tags.rb +3 -3
- data/lib/instagram/client/users.rb +19 -19
- data/lib/instagram/client/utils.rb +5 -5
- data/lib/instagram/configuration.rb +7 -6
- data/lib/instagram/connection.rb +7 -7
- data/lib/instagram/oauth.rb +8 -8
- data/lib/instagram/request.rb +23 -26
- data/lib/instagram/response.rb +8 -4
- data/lib/instagram/version.rb +1 -1
- data/spec/faraday/response_spec.rb +23 -25
- data/spec/instagram/api_spec.rb +90 -94
- data/spec/instagram/client/comments_spec.rb +21 -25
- data/spec/instagram/client/embedding_spec.rb +8 -8
- data/spec/instagram/client/geography_spec.rb +10 -13
- data/spec/instagram/client/likes_spec.rb +21 -25
- data/spec/instagram/client/locations_spec.rb +42 -48
- data/spec/instagram/client/media_spec.rb +33 -37
- data/spec/instagram/client/subscriptions_spec.rb +34 -46
- data/spec/instagram/client/tags_spec.rb +29 -33
- data/spec/instagram/client/users_spec.rb +155 -180
- data/spec/instagram/client/utils_spec.rb +8 -9
- data/spec/instagram/client_spec.rb +9 -9
- data/spec/instagram/request_spec.rb +27 -27
- data/spec/instagram_spec.rb +20 -24
- data/spec/spec_helper.rb +10 -10
- metadata +24 -9
@@ -15,7 +15,7 @@ module Instagram
|
|
15
15
|
# If getting this data of a protected user, you must be authenticated (and be allowed to see that user).
|
16
16
|
# @rate_limited true
|
17
17
|
# @see http://instagram.com/developer/endpoints/likes/#get_media_likes
|
18
|
-
def media_likes(id, *
|
18
|
+
def media_likes(id, *_args)
|
19
19
|
response = get("media/#{id}/likes")
|
20
20
|
response
|
21
21
|
end
|
@@ -33,8 +33,8 @@ module Instagram
|
|
33
33
|
# If getting this data of a protected user, you must be authenticated (and be allowed to see that user).
|
34
34
|
# @rate_limited true
|
35
35
|
# @see http://instagram.com/developer/endpoints/likes/#post_likes
|
36
|
-
def like_media(id, options={})
|
37
|
-
response = post("media/#{id}/likes", options, signature=true)
|
36
|
+
def like_media(id, options = {})
|
37
|
+
response = post("media/#{id}/likes", options, signature = true)
|
38
38
|
response
|
39
39
|
end
|
40
40
|
|
@@ -49,8 +49,8 @@ module Instagram
|
|
49
49
|
# @authenticated true
|
50
50
|
# @rate_limited true
|
51
51
|
# @see http://instagram.com/developer/endpoints/likes/#delete_likes
|
52
|
-
def unlike_media(id, options={})
|
53
|
-
response = delete("media/#{id}/likes", options, signature=true)
|
52
|
+
def unlike_media(id, options = {})
|
53
|
+
response = delete("media/#{id}/likes", options, signature = true)
|
54
54
|
response
|
55
55
|
end
|
56
56
|
end
|
@@ -13,7 +13,7 @@ module Instagram
|
|
13
13
|
# @authenticated false
|
14
14
|
# @rate_limited true
|
15
15
|
# @see http://instagram.com/developer/endpoints/locations/#get_locations
|
16
|
-
def location(id, *
|
16
|
+
def location(id, *_args)
|
17
17
|
response = get("locations/#{id}")
|
18
18
|
response
|
19
19
|
end
|
@@ -60,13 +60,13 @@ module Instagram
|
|
60
60
|
case args.size
|
61
61
|
when 1
|
62
62
|
facebook_places_id = args.first
|
63
|
-
response = get(
|
63
|
+
response = get("locations/search", options.merge(facebook_places_id: facebook_places_id))
|
64
64
|
when 2
|
65
65
|
lat, lng = args
|
66
|
-
response = get(
|
66
|
+
response = get("locations/search", options.merge(lat: lat, lng: lng))
|
67
67
|
when 3
|
68
68
|
lat, lng, distance = args
|
69
|
-
response = get(
|
69
|
+
response = get("locations/search", options.merge(lat: lat, lng: lng, distance: distance))
|
70
70
|
end
|
71
71
|
response
|
72
72
|
end
|
@@ -16,7 +16,7 @@ module Instagram
|
|
16
16
|
# @rate_limited true
|
17
17
|
# @see http://instagram.com/developer/endpoints/media/#get_media
|
18
18
|
def media_item(*args)
|
19
|
-
id = args.first ||
|
19
|
+
id = args.first || "self"
|
20
20
|
response = get("media/#{id}")
|
21
21
|
response
|
22
22
|
end
|
@@ -73,8 +73,8 @@ module Instagram
|
|
73
73
|
# @format :json
|
74
74
|
# @authenticated false
|
75
75
|
# @rate_limited true
|
76
|
-
def media_search(lat, lng, options={})
|
77
|
-
response = get(
|
76
|
+
def media_search(lat, lng, options = {})
|
77
|
+
response = get("media/search", options.merge(lat: lat, lng: lng))
|
78
78
|
response
|
79
79
|
end
|
80
80
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "openssl"
|
2
|
+
require "multi_json"
|
3
3
|
|
4
4
|
module Instagram
|
5
5
|
class Client
|
@@ -17,8 +17,8 @@ module Instagram
|
|
17
17
|
# Requires client_secret to be set on the client or passed in options
|
18
18
|
# @rate_limited true
|
19
19
|
# @see https://api.instagram.com/developer/realtime/
|
20
|
-
def subscriptions(options={})
|
21
|
-
response = get("subscriptions", options.merge(:
|
20
|
+
def subscriptions(options = {})
|
21
|
+
response = get("subscriptions", options.merge(client_secret: client_secret))
|
22
22
|
response
|
23
23
|
end
|
24
24
|
|
@@ -58,12 +58,12 @@ module Instagram
|
|
58
58
|
object = args.shift
|
59
59
|
callback_url = args.shift
|
60
60
|
aspect = args.shift
|
61
|
-
options.tap
|
61
|
+
options.tap do |o|
|
62
62
|
o[:object] = object unless object.nil?
|
63
63
|
o[:callback_url] = callback_url unless callback_url.nil?
|
64
64
|
o[:aspect] = aspect || o[:aspect] || "media"
|
65
|
-
|
66
|
-
response = post("subscriptions", options.merge(:
|
65
|
+
end
|
66
|
+
response = post("subscriptions", options.merge(client_secret: client_secret), signature = true)
|
67
67
|
response
|
68
68
|
end
|
69
69
|
|
@@ -91,8 +91,8 @@ module Instagram
|
|
91
91
|
def delete_subscription(*args)
|
92
92
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
93
93
|
subscription_id = args.first
|
94
|
-
options
|
95
|
-
response = delete("subscriptions", options.merge(:
|
94
|
+
options[:id] = subscription_id if subscription_id
|
95
|
+
response = delete("subscriptions", options.merge(client_secret: client_secret), signature = true)
|
96
96
|
response
|
97
97
|
end
|
98
98
|
|
@@ -111,14 +111,14 @@ module Instagram
|
|
111
111
|
# @return the challenge string to be sent back to Instagram, or false if the request is invalid.
|
112
112
|
def meet_challenge(params, verify_token = nil, &verification_block)
|
113
113
|
if params["hub.mode"] == "subscribe" &&
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
114
|
+
# you can make sure this is legitimate through two ways
|
115
|
+
# if your store the token across the calls, you can pass in the token value
|
116
|
+
# and we'll make sure it matches
|
117
|
+
((verify_token && params["hub.verify_token"] == verify_token) ||
|
118
|
+
# alternately, if you sent a specially-constructed value (such as a hash of various secret values)
|
119
|
+
# you can pass in a block, which we'll call with the verify_token sent by Instagram
|
120
|
+
# if it's legit, return anything that evaluates to true; otherwise, return nil or false
|
121
|
+
(verification_block && yield(params["hub.verify_token"])))
|
122
122
|
params["hub.challenge"]
|
123
123
|
else
|
124
124
|
false
|
@@ -143,8 +143,8 @@ module Instagram
|
|
143
143
|
raise ArgumentError, "client_secret must be set during configure"
|
144
144
|
end
|
145
145
|
|
146
|
-
if request_signature = headers[
|
147
|
-
calculated_signature = OpenSSL::HMAC.hexdigest(
|
146
|
+
if request_signature = headers["X-Hub-Signature"] || headers["HTTP_X_HUB_SIGNATURE"]
|
147
|
+
calculated_signature = OpenSSL::HMAC.hexdigest("sha1", client_secret, body)
|
148
148
|
calculated_signature == request_signature
|
149
149
|
end
|
150
150
|
end
|
@@ -174,14 +174,14 @@ module Instagram
|
|
174
174
|
# Requires client_secret to be set on the client or passed in options
|
175
175
|
# @rate_limited true
|
176
176
|
# @see https://api.instagram.com/developer/realtime/
|
177
|
-
def process_subscription(json, options={}
|
177
|
+
def process_subscription(json, options = {})
|
178
178
|
raise ArgumentError, "callbacks block expected" unless block_given?
|
179
179
|
|
180
|
-
if options.
|
181
|
-
|
180
|
+
if options.key?(:signature)
|
181
|
+
unless client_secret
|
182
182
|
raise ArgumentError, "client_secret must be set during configure"
|
183
183
|
end
|
184
|
-
digest = OpenSSL::Digest.new(
|
184
|
+
digest = OpenSSL::Digest.new("sha1")
|
185
185
|
verify_signature = OpenSSL::HMAC.hexdigest(digest, client_secret, json)
|
186
186
|
|
187
187
|
if options[:signature] != verify_signature
|
@@ -190,15 +190,15 @@ module Instagram
|
|
190
190
|
end
|
191
191
|
|
192
192
|
payload = MultiJson.decode(json)
|
193
|
-
@changes = Hash.new { |h,k| h[k] = [] }
|
193
|
+
@changes = Hash.new { |h, k| h[k] = [] }
|
194
194
|
for change in payload
|
195
|
-
@changes[change[
|
195
|
+
@changes[change["object"]] << change
|
196
196
|
end
|
197
|
-
|
197
|
+
yield(self)
|
198
198
|
end
|
199
199
|
|
200
200
|
[:user, :tag, :location, :geography].each do |object|
|
201
|
-
class_eval <<-RUBY_EVAL, __FILE__, __LINE__ +1
|
201
|
+
class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
|
202
202
|
def on_#{object}_changed(&block)
|
203
203
|
for change in @changes['#{object}']
|
204
204
|
yield change.delete('object_id'), change
|
@@ -13,7 +13,7 @@ module Instagram
|
|
13
13
|
# @authenticated false
|
14
14
|
# @rate_limited true
|
15
15
|
# @see http://instagram.com/developer/endpoints/tags/#get_tags
|
16
|
-
def tag(tag, *
|
16
|
+
def tag(tag, *_args)
|
17
17
|
response = get("tags/#{tag}")
|
18
18
|
response
|
19
19
|
end
|
@@ -50,8 +50,8 @@ module Instagram
|
|
50
50
|
# @see http://instagram.com/developer/endpoints/tags/#get_tags_search
|
51
51
|
# @example Return tags that start with "cat"
|
52
52
|
# Instagram.tag_search("cat")
|
53
|
-
def tag_search(query, options={})
|
54
|
-
response = get(
|
53
|
+
def tag_search(query, options = {})
|
54
|
+
response = get("tags/search", options.merge(q: query))
|
55
55
|
response
|
56
56
|
end
|
57
57
|
end
|
@@ -17,7 +17,7 @@ module Instagram
|
|
17
17
|
# @see http://instagram.com/developer/endpoints/users/#get_users
|
18
18
|
def user(*args)
|
19
19
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
20
|
-
id = args.first ||
|
20
|
+
id = args.first || "self"
|
21
21
|
response = get("users/#{id}", options)
|
22
22
|
response
|
23
23
|
end
|
@@ -34,8 +34,8 @@ module Instagram
|
|
34
34
|
# @see http://instagram.com/developer/endpoints/users/#get_users_search
|
35
35
|
# @example Return users that match "Shayne Sweeney"
|
36
36
|
# Instagram.user_search("Shayne Sweeney")
|
37
|
-
def user_search(query, options={})
|
38
|
-
response = get(
|
37
|
+
def user_search(query, options = {})
|
38
|
+
response = get("users/search", options.merge(q: query))
|
39
39
|
response
|
40
40
|
end
|
41
41
|
|
@@ -111,7 +111,7 @@ module Instagram
|
|
111
111
|
# @format :json
|
112
112
|
# @authenticated true
|
113
113
|
# @rate_limited true
|
114
|
-
def user_requested_by
|
114
|
+
def user_requested_by
|
115
115
|
response = get("users/self/requested-by")
|
116
116
|
response
|
117
117
|
end
|
@@ -132,7 +132,7 @@ module Instagram
|
|
132
132
|
# @see http://instagram.com/developer/endpoints/users/#get_users_feed
|
133
133
|
def user_media_feed(*args)
|
134
134
|
options = args.first.is_a?(Hash) ? args.pop : {}
|
135
|
-
response = get(
|
135
|
+
response = get("users/self/feed", options)
|
136
136
|
response
|
137
137
|
end
|
138
138
|
|
@@ -177,7 +177,7 @@ module Instagram
|
|
177
177
|
# @format :json
|
178
178
|
# @authenticated true
|
179
179
|
# @rate_limited true
|
180
|
-
def user_liked_media(options={})
|
180
|
+
def user_liked_media(options = {})
|
181
181
|
response = get("users/self/media/liked", options)
|
182
182
|
response
|
183
183
|
end
|
@@ -194,7 +194,7 @@ module Instagram
|
|
194
194
|
# @format :json
|
195
195
|
# @authenticated true
|
196
196
|
# @rate_limited true
|
197
|
-
def user_relationship(id, options={})
|
197
|
+
def user_relationship(id, options = {})
|
198
198
|
response = get("users/#{id}/relationship", options)
|
199
199
|
response
|
200
200
|
end
|
@@ -211,9 +211,9 @@ module Instagram
|
|
211
211
|
# @format :json
|
212
212
|
# @authenticated true
|
213
213
|
# @rate_limited true
|
214
|
-
def follow_user(id, options={})
|
214
|
+
def follow_user(id, options = {})
|
215
215
|
options["action"] = "follow"
|
216
|
-
response = post("users/#{id}/relationship", options, signature=true)
|
216
|
+
response = post("users/#{id}/relationship", options, signature = true)
|
217
217
|
response
|
218
218
|
end
|
219
219
|
|
@@ -229,9 +229,9 @@ module Instagram
|
|
229
229
|
# @format :json
|
230
230
|
# @authenticated true
|
231
231
|
# @rate_limited true
|
232
|
-
def unfollow_user(id, options={})
|
232
|
+
def unfollow_user(id, options = {})
|
233
233
|
options["action"] = "unfollow"
|
234
|
-
response = post("users/#{id}/relationship", options, signature=true)
|
234
|
+
response = post("users/#{id}/relationship", options, signature = true)
|
235
235
|
response
|
236
236
|
end
|
237
237
|
|
@@ -247,9 +247,9 @@ module Instagram
|
|
247
247
|
# @format :json
|
248
248
|
# @authenticated true
|
249
249
|
# @rate_limited true
|
250
|
-
def block_user(id, options={})
|
250
|
+
def block_user(id, options = {})
|
251
251
|
options["action"] = "block"
|
252
|
-
response = post("users/#{id}/relationship", options, signature=true)
|
252
|
+
response = post("users/#{id}/relationship", options, signature = true)
|
253
253
|
response
|
254
254
|
end
|
255
255
|
|
@@ -265,9 +265,9 @@ module Instagram
|
|
265
265
|
# @format :json
|
266
266
|
# @authenticated true
|
267
267
|
# @rate_limited true
|
268
|
-
def unblock_user(id, options={})
|
268
|
+
def unblock_user(id, options = {})
|
269
269
|
options["action"] = "unblock"
|
270
|
-
response = post("users/#{id}/relationship", options, signature=true)
|
270
|
+
response = post("users/#{id}/relationship", options, signature = true)
|
271
271
|
response
|
272
272
|
end
|
273
273
|
|
@@ -283,9 +283,9 @@ module Instagram
|
|
283
283
|
# @format :json
|
284
284
|
# @authenticated true
|
285
285
|
# @rate_limited true
|
286
|
-
def approve_user(id, options={})
|
286
|
+
def approve_user(id, options = {})
|
287
287
|
options["action"] = "approve"
|
288
|
-
response = post("users/#{id}/relationship", options, signature=true)
|
288
|
+
response = post("users/#{id}/relationship", options, signature = true)
|
289
289
|
response
|
290
290
|
end
|
291
291
|
|
@@ -301,9 +301,9 @@ module Instagram
|
|
301
301
|
# @format :json
|
302
302
|
# @authenticated true
|
303
303
|
# @rate_limited true
|
304
|
-
def deny_user(id, options={})
|
304
|
+
def deny_user(id, options = {})
|
305
305
|
options["action"] = "deny"
|
306
|
-
response = post("users/#{id}/relationship", options, signature=true)
|
306
|
+
response = post("users/#{id}/relationship", options, signature = true)
|
307
307
|
response
|
308
308
|
end
|
309
309
|
end
|
@@ -2,26 +2,26 @@ module Instagram
|
|
2
2
|
class Client
|
3
3
|
# @private
|
4
4
|
module Utils
|
5
|
-
# Returns the raw full response including all headers. Can be used to access the values for 'X-Ratelimit-Limit' and 'X-Ratelimit-Remaining'
|
5
|
+
# Returns the raw full response including all headers. Can be used to access the values for 'X-Ratelimit-Limit' and 'X-Ratelimit-Remaining'
|
6
6
|
# ==== Examples
|
7
|
-
#
|
7
|
+
#
|
8
8
|
# client = Instagram.client(:access_token => session[:access_token])
|
9
9
|
# response = client.utils_raw_response
|
10
10
|
# remaining = response.headers[:x_ratelimit_remaining]
|
11
11
|
# limit = response.headers[:x_ratelimit_limit]
|
12
12
|
#
|
13
13
|
def utils_raw_response
|
14
|
-
response = get(
|
14
|
+
response = get("users/self/feed", nil, false, true)
|
15
15
|
response
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
private
|
19
19
|
|
20
20
|
# Returns the configured user name or the user name of the authenticated user
|
21
21
|
#
|
22
22
|
# @return [String]
|
23
23
|
def get_username
|
24
|
-
@user_name ||=
|
24
|
+
@user_name ||= user.username
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require File.expand_path(
|
1
|
+
require "faraday"
|
2
|
+
require File.expand_path("../version", __FILE__)
|
3
3
|
|
4
4
|
module Instagram
|
5
5
|
# Defines constants and methods related to configuration
|
@@ -41,12 +41,12 @@ module Instagram
|
|
41
41
|
DEFAULT_CLIENT_IPS = nil
|
42
42
|
|
43
43
|
# By default, don't set any connection options
|
44
|
-
DEFAULT_CONNECTION_OPTIONS = {}
|
44
|
+
DEFAULT_CONNECTION_OPTIONS = {}.freeze
|
45
45
|
|
46
46
|
# The endpoint that will be used to connect if none is set
|
47
47
|
#
|
48
48
|
# @note There is no reason to use any other endpoint at this time
|
49
|
-
DEFAULT_ENDPOINT =
|
49
|
+
DEFAULT_ENDPOINT = "https://api.instagram.com/v1/".freeze
|
50
50
|
|
51
51
|
# The response format appended to the path and sent in the 'Accept' header if none is set
|
52
52
|
#
|
@@ -72,7 +72,8 @@ module Instagram
|
|
72
72
|
#
|
73
73
|
# @note Not all methods support the XML format.
|
74
74
|
VALID_FORMATS = [
|
75
|
-
:json
|
75
|
+
:json,
|
76
|
+
].freeze
|
76
77
|
|
77
78
|
# By default, don't turn on loud logging
|
78
79
|
DEFAULT_LOUD_LOGGER = nil
|
@@ -114,7 +115,7 @@ module Instagram
|
|
114
115
|
self.format = DEFAULT_FORMAT
|
115
116
|
self.proxy = DEFAULT_PROXY
|
116
117
|
self.user_agent = DEFAULT_USER_AGENT
|
117
|
-
self.no_response_wrapper= DEFAULT_NO_RESPONSE_WRAPPER
|
118
|
+
self.no_response_wrapper = DEFAULT_NO_RESPONSE_WRAPPER
|
118
119
|
self.loud_logger = DEFAULT_LOUD_LOGGER
|
119
120
|
self.sign_requests = DEFAULT_SIGN_REQUESTS
|
120
121
|
end
|
data/lib/instagram/connection.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
require
|
2
|
-
Dir[File.expand_path(
|
1
|
+
require "faraday_middleware"
|
2
|
+
Dir[File.expand_path("../../faraday/*.rb", __FILE__)].each { |f| require f }
|
3
3
|
|
4
4
|
module Instagram
|
5
5
|
# @private
|
6
6
|
module Connection
|
7
7
|
private
|
8
8
|
|
9
|
-
def connection(raw=false)
|
9
|
+
def connection(raw = false)
|
10
10
|
options = {
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
11
|
+
headers: { "Accept" => "application/#{format}; charset=utf-8", "User-Agent" => user_agent },
|
12
|
+
proxy: proxy,
|
13
|
+
url: endpoint,
|
14
14
|
}.merge(connection_options)
|
15
15
|
|
16
16
|
Faraday::Connection.new(options) do |connection|
|
@@ -19,7 +19,7 @@ module Instagram
|
|
19
19
|
connection.use FaradayMiddleware::Mashify unless raw
|
20
20
|
unless raw
|
21
21
|
case format.to_s.downcase
|
22
|
-
when
|
22
|
+
when "json" then connection.use Faraday::Response::ParseJson
|
23
23
|
end
|
24
24
|
end
|
25
25
|
connection.use FaradayMiddleware::RaiseHttpException
|
data/lib/instagram/oauth.rb
CHANGED
@@ -2,34 +2,34 @@ module Instagram
|
|
2
2
|
# Defines HTTP request methods
|
3
3
|
module OAuth
|
4
4
|
# Return URL for OAuth authorization
|
5
|
-
def authorize_url(options={})
|
5
|
+
def authorize_url(options = {})
|
6
6
|
options[:response_type] ||= "code"
|
7
7
|
options[:scope] ||= scope if !scope.nil? && !scope.empty?
|
8
|
-
options[:redirect_uri] ||=
|
8
|
+
options[:redirect_uri] ||= redirect_uri
|
9
9
|
params = authorization_params.merge(options)
|
10
10
|
connection.build_url("/oauth/authorize/", params).to_s
|
11
11
|
end
|
12
12
|
|
13
13
|
# Return an access token from authorization
|
14
|
-
def get_access_token(code, options={})
|
14
|
+
def get_access_token(code, options = {})
|
15
15
|
options[:grant_type] ||= "authorization_code"
|
16
|
-
options[:redirect_uri] ||=
|
16
|
+
options[:redirect_uri] ||= redirect_uri
|
17
17
|
params = access_token_params.merge(options)
|
18
|
-
post("/oauth/access_token/", params.merge(:
|
18
|
+
post("/oauth/access_token/", params.merge(code: code), signature = false, raw = false, unformatted = true, no_response_wrapper = true)
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
23
|
def authorization_params
|
24
24
|
{
|
25
|
-
:
|
25
|
+
client_id: client_id,
|
26
26
|
}
|
27
27
|
end
|
28
28
|
|
29
29
|
def access_token_params
|
30
30
|
{
|
31
|
-
:
|
32
|
-
:
|
31
|
+
client_id: client_id,
|
32
|
+
client_secret: client_secret,
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|