instagram 0.11.0 → 1.0.0
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 +8 -8
- data/.gitignore +1 -0
- data/LICENSE.md +27 -17
- data/PATENTS.md +23 -0
- data/README.md +129 -46
- data/instagram.gemspec +18 -6
- data/lib/faraday/raise_http_exception.rb +4 -0
- data/lib/instagram/api.rb +8 -0
- data/lib/instagram/client.rb +2 -2
- data/lib/instagram/client/comments.rb +3 -3
- data/lib/instagram/client/embedding.rb +17 -0
- data/lib/instagram/client/likes.rb +3 -3
- data/lib/instagram/client/locations.rb +6 -3
- data/lib/instagram/client/media.rb +3 -3
- data/lib/instagram/client/subscriptions.rb +57 -2
- data/lib/instagram/client/tags.rb +6 -6
- data/lib/instagram/client/users.rb +15 -15
- data/lib/instagram/client/utils.rb +13 -0
- data/lib/instagram/configuration.rb +37 -25
- data/lib/instagram/connection.rb +1 -1
- data/lib/instagram/error.rb +6 -0
- data/lib/instagram/oauth.rb +2 -0
- data/lib/instagram/request.rb +4 -4
- data/lib/instagram/version.rb +1 -1
- data/spec/faraday/response_spec.rb +30 -0
- data/spec/instagram/api_spec.rb +97 -21
- data/spec/instagram/client/locations_spec.rb +24 -0
- data/spec/instagram/client/subscriptions_spec.rb +8 -5
- data/spec/instagram/client/tags_spec.rb +1 -0
- data/spec/instagram/client_spec.rb +1 -1
- metadata +23 -9
@@ -1,6 +1,23 @@
|
|
1
1
|
module Instagram
|
2
2
|
class Client
|
3
|
+
# Defines methods related to embedding
|
3
4
|
module Embedding
|
5
|
+
# Returns information about the media associated with the given short link
|
6
|
+
#
|
7
|
+
# @overload oembed(url=nil, options={})
|
8
|
+
# @param url [String] An instagram short link
|
9
|
+
# @param options [Hash] A customizable set of options
|
10
|
+
# @option options [Integer] :maxheight Maximum height of returned media
|
11
|
+
# @option options [Integer] :maxwidth Maximum width of returned media
|
12
|
+
# @option options [Integer] :callback A JSON callback to be invoked
|
13
|
+
# @return [Hashie::Mash] Information about the media associated with given short link
|
14
|
+
# @example Return information about the media associated with http://instagr.am/p/BUG/
|
15
|
+
# Instagram.oembed(http://instagr.am/p/BUG/)
|
16
|
+
#
|
17
|
+
# @see http://instagram.com/developer/embedding/#oembed
|
18
|
+
# @format :json
|
19
|
+
# @authenticated false
|
20
|
+
# @rate_limited true
|
4
21
|
def oembed(*args)
|
5
22
|
url = args.first
|
6
23
|
return nil unless url
|
@@ -14,7 +14,7 @@ module Instagram
|
|
14
14
|
#
|
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
|
-
# @see
|
17
|
+
# @see http://instagram.com/developer/endpoints/likes/#get_media_likes
|
18
18
|
def media_likes(id, *args)
|
19
19
|
response = get("media/#{id}/likes")
|
20
20
|
response
|
@@ -32,7 +32,7 @@ module Instagram
|
|
32
32
|
#
|
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
|
-
# @see
|
35
|
+
# @see http://instagram.com/developer/endpoints/likes/#post_likes
|
36
36
|
def like_media(id, options={})
|
37
37
|
response = post("media/#{id}/likes", options)
|
38
38
|
response
|
@@ -48,7 +48,7 @@ module Instagram
|
|
48
48
|
# @format :json
|
49
49
|
# @authenticated true
|
50
50
|
# @rate_limited true
|
51
|
-
# @see
|
51
|
+
# @see http://instagram.com/developer/endpoints/likes/#delete_likes
|
52
52
|
def unlike_media(id, options={})
|
53
53
|
response = delete("media/#{id}/likes", options)
|
54
54
|
response
|
@@ -12,7 +12,7 @@ module Instagram
|
|
12
12
|
# @format :json
|
13
13
|
# @authenticated false
|
14
14
|
# @rate_limited true
|
15
|
-
# @see
|
15
|
+
# @see http://instagram.com/developer/endpoints/locations/#get_locations
|
16
16
|
def location(id, *args)
|
17
17
|
response = get("locations/#{id}")
|
18
18
|
response
|
@@ -28,7 +28,7 @@ module Instagram
|
|
28
28
|
# @return [Hashie::Mash]
|
29
29
|
# @example Return a list of the most recent media items taken at the Instagram office
|
30
30
|
# Instagram.location_recent_media(514276)
|
31
|
-
# @see
|
31
|
+
# @see http://instagram.com/developer/endpoints/locations/#get_locations_media_recent
|
32
32
|
# @format :json
|
33
33
|
# @authenticated false
|
34
34
|
# @rate_limited true
|
@@ -50,7 +50,7 @@ module Instagram
|
|
50
50
|
# Instagram.location_search("3fd66200f964a520c5f11ee3") (Schiller's Liquor Bar, 131 Rivington St., NY, NY 10002)
|
51
51
|
# @example 2: Return locations around 37.7808851, -122.3948632 (164 S Park, SF, CA USA)
|
52
52
|
# Instagram.location_search("37.7808851", "-122.3948632")
|
53
|
-
# @see
|
53
|
+
# @see http://instagram.com/developer/endpoints/locations/#get_locations_search
|
54
54
|
# @format :json
|
55
55
|
# @authenticated false
|
56
56
|
# @rate_limited true
|
@@ -63,6 +63,9 @@ module Instagram
|
|
63
63
|
when 2
|
64
64
|
lat, lng = args
|
65
65
|
response = get('locations/search', options.merge(:lat => lat, :lng => lng))
|
66
|
+
when 3
|
67
|
+
lat, lng, distance = args
|
68
|
+
response = get('locations/search', options.merge(:lat => lat, :lng => lng, :distance => distance))
|
66
69
|
end
|
67
70
|
response
|
68
71
|
end
|
@@ -14,7 +14,7 @@ module Instagram
|
|
14
14
|
#
|
15
15
|
# If getting this data of a protected user, you must authenticate (and be allowed to see that user).
|
16
16
|
# @rate_limited true
|
17
|
-
# @see
|
17
|
+
# @see http://instagram.com/developer/endpoints/media/#get_media
|
18
18
|
def media_item(*args)
|
19
19
|
id = args.first || 'self'
|
20
20
|
response = get("media/#{id}")
|
@@ -28,7 +28,7 @@ module Instagram
|
|
28
28
|
# @return [Hashie::Mash]
|
29
29
|
# @example Returns a list of the overall most popular media
|
30
30
|
# Instagram.media_popular
|
31
|
-
# @see
|
31
|
+
# @see http://instagram.com/developer/endpoints/media/#get_media_popular
|
32
32
|
# @format :json
|
33
33
|
# @authenticated false unless requesting it from a protected user
|
34
34
|
#
|
@@ -50,7 +50,7 @@ module Instagram
|
|
50
50
|
# @return [Hashie::Mash] A list of matching media
|
51
51
|
# @example Return media around 37.7808851, -122.3948632 (164 S Park, SF, CA USA)
|
52
52
|
# Instagram.media_search("37.7808851", "-122.3948632")
|
53
|
-
# @see
|
53
|
+
# @see http://instagram.com/developer/endpoints/media/#get_media_search
|
54
54
|
# @format :json
|
55
55
|
# @authenticated false
|
56
56
|
# @rate_limited true
|
@@ -41,7 +41,7 @@ module Instagram
|
|
41
41
|
# @option options [String, Integer] :object_id When specifying a location or tag use the location's ID or tag name respectively
|
42
42
|
# @option options [String, Float] :lat The center latitude of an area, used when subscribing to a geography object
|
43
43
|
# @option options [String, Float] :lng The center longitude of an area, used when subscribing to a geography object
|
44
|
-
# @option options [String, Integer] :radius The distance in meters you'd like to capture around a given point
|
44
|
+
# @option options [String, Integer] :radius The distance in meters you'd like to capture around a given point
|
45
45
|
#
|
46
46
|
# Note that we only support "media" at this time, but we might support other types of subscriptions in the future.
|
47
47
|
# @return [Hashie::Mash] The subscription created.
|
@@ -96,6 +96,61 @@ module Instagram
|
|
96
96
|
response
|
97
97
|
end
|
98
98
|
|
99
|
+
# As a security measure (to prevent DDoS attacks), Instagram sends a verification request to your server
|
100
|
+
# after you request a subscription.
|
101
|
+
# This method parses the challenge params and makes sure the call is legitimate.
|
102
|
+
#
|
103
|
+
# @param params the request parameters sent by Instagram. (You can pass in a Rails params hash.)
|
104
|
+
# @param verify_token the verify token sent in the {#subscribe subscription request}, if you provided one
|
105
|
+
#
|
106
|
+
# @yield verify_token if you need to compute the verification token
|
107
|
+
# (for instance, if your callback URL includes a record ID, which you look up
|
108
|
+
# and use to calculate a hash), you can pass meet_challenge a block, which
|
109
|
+
# will receive the verify_token received back from Instagram.
|
110
|
+
#
|
111
|
+
# @return the challenge string to be sent back to Instagram, or false if the request is invalid.
|
112
|
+
def meet_challenge(params, verify_token = nil, &verification_block)
|
113
|
+
if params["hub.mode"] == "subscribe" &&
|
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
|
+
params["hub.challenge"]
|
123
|
+
else
|
124
|
+
false
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
# Public: As a security measure, all updates from Instagram are signed using
|
129
|
+
# X-Hub-Signature: sha1=XXXX where XXX is the sha1 of the json payload
|
130
|
+
# using your application secret as the key.
|
131
|
+
#
|
132
|
+
# Example:
|
133
|
+
# # in Rails controller
|
134
|
+
# def receive_update
|
135
|
+
# if Instagram.validate_update(request.body, headers)
|
136
|
+
# ...
|
137
|
+
# else
|
138
|
+
# render text: "not authorized", status: 401
|
139
|
+
# end
|
140
|
+
# end
|
141
|
+
def validate_update(body, headers)
|
142
|
+
unless client_secret
|
143
|
+
raise ArgumentError, "client_secret must be set during configure"
|
144
|
+
end
|
145
|
+
|
146
|
+
if request_signature = headers['X-Hub-Signature'] || headers['HTTP_X_HUB_SIGNATURE'] and
|
147
|
+
signature_parts = request_signature.split('sha1=')
|
148
|
+
request_signature = signature_parts[1]
|
149
|
+
calculated_signature = OpenSSL::HMAC.hexdigest('sha1', client_secret, body)
|
150
|
+
calculated_signature == request_signature
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
99
154
|
# Process a subscription notification JSON payload
|
100
155
|
#
|
101
156
|
# @overload process_subscription(json, &block)
|
@@ -124,7 +179,7 @@ module Instagram
|
|
124
179
|
def process_subscription(json, options={}, &block)
|
125
180
|
raise ArgumentError, "callbacks block expected" unless block_given?
|
126
181
|
|
127
|
-
if options
|
182
|
+
if options.has_key?(:signature)
|
128
183
|
if !client_secret
|
129
184
|
raise ArgumentError, "client_secret must be set during configure"
|
130
185
|
end
|
@@ -12,7 +12,7 @@ module Instagram
|
|
12
12
|
# @format :json
|
13
13
|
# @authenticated false
|
14
14
|
# @rate_limited true
|
15
|
-
# @see
|
15
|
+
# @see http://instagram.com/developer/endpoints/tags/#get_tags
|
16
16
|
def tag(tag, *args)
|
17
17
|
response = get("tags/#{tag}")
|
18
18
|
response
|
@@ -21,20 +21,20 @@ module Instagram
|
|
21
21
|
# Returns a list of recent media items for a given Instagram tag
|
22
22
|
#
|
23
23
|
# @overload tag_recent_media(tag, options={})
|
24
|
-
# @param
|
24
|
+
# @param tag-name [String] An Instagram tag name.
|
25
25
|
# @param options [Hash] A customizable set of options.
|
26
26
|
# @option options [Integer] :max_id (nil) Returns results with an ID less than (that is, older than) or equal to the specified ID.
|
27
|
-
# @option options [Integer] :
|
27
|
+
# @option options [Integer] :min_id (nil) Returns results with an ID greater than (that is, newer than) or equal to the specified ID.
|
28
28
|
# @return [Hashie::Mash]
|
29
29
|
# @example Return a list of the most recent media items tagged "cat"
|
30
30
|
# Instagram.tag_recent_media('cat')
|
31
|
-
# @see
|
31
|
+
# @see http://instagram.com/developer/endpoints/tags/#get_tags_media_recent
|
32
32
|
# @format :json
|
33
33
|
# @authenticated false
|
34
34
|
# @rate_limited true
|
35
35
|
def tag_recent_media(id, *args)
|
36
36
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
37
|
-
response = get("tags/#{id}/media/recent", options)
|
37
|
+
response = get("tags/#{id}/media/recent", options, false, false)
|
38
38
|
response
|
39
39
|
end
|
40
40
|
|
@@ -47,7 +47,7 @@ module Instagram
|
|
47
47
|
# @param options [Hash] A customizable set of options.
|
48
48
|
# @option options [Integer] :count The number of media items to retrieve.
|
49
49
|
# @return [Hashie::Mash]
|
50
|
-
# @see
|
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
53
|
def tag_search(query, options={})
|
@@ -14,7 +14,7 @@ module Instagram
|
|
14
14
|
#
|
15
15
|
# If getting this data of a protected user, you must authenticate (and be allowed to see that user).
|
16
16
|
# @rate_limited true
|
17
|
-
# @see
|
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
20
|
id = args.first || 'self'
|
@@ -31,7 +31,7 @@ module Instagram
|
|
31
31
|
# @param options [Hash] A customizable set of options.
|
32
32
|
# @option options [Integer] :count The number of users to retrieve.
|
33
33
|
# @return [Hashie::Mash]
|
34
|
-
# @see
|
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
37
|
def user_search(query, options={})
|
@@ -54,7 +54,7 @@ module Instagram
|
|
54
54
|
# @return [Hashie::Mash]
|
55
55
|
# @example Return a list of users @mikeyk follows
|
56
56
|
# Instagram.user_follows(4) # @mikeyk user ID being 4
|
57
|
-
# @see
|
57
|
+
# @see http://instagram.com/developer/endpoints/relationships/#get_users_follows
|
58
58
|
# @format :json
|
59
59
|
# @authenticated false unless requesting it from a protected user
|
60
60
|
#
|
@@ -83,7 +83,7 @@ module Instagram
|
|
83
83
|
# @return [Hashie::Mash]
|
84
84
|
# @example Return a list of users @mikeyk is followed by
|
85
85
|
# Instagram.user_followed_by(4) # @mikeyk user ID being 4
|
86
|
-
# @see
|
86
|
+
# @see http://instagram.com/developer/endpoints/relationships/#get_users_followed_by
|
87
87
|
# @format :json
|
88
88
|
# @authenticated false unless requesting it from a protected user
|
89
89
|
#
|
@@ -96,7 +96,7 @@ module Instagram
|
|
96
96
|
response
|
97
97
|
end
|
98
98
|
|
99
|
-
# Returns a list of users
|
99
|
+
# Returns a list of users who have requested the currently authorized user's permission to follow
|
100
100
|
#
|
101
101
|
# @overload user_requested_by()
|
102
102
|
# @param options [Hash] A customizable set of options.
|
@@ -107,16 +107,16 @@ module Instagram
|
|
107
107
|
# @return [Hashie::Mash]
|
108
108
|
# @example Return a list of users who have requested to follow the authenticated user
|
109
109
|
# Instagram.user_requested_by()
|
110
|
-
# @see
|
110
|
+
# @see http://instagram.com/developer/endpoints/relationships/#get_incoming_requests
|
111
111
|
# @format :json
|
112
|
-
# @authenticated
|
112
|
+
# @authenticated true
|
113
113
|
# @rate_limited true
|
114
114
|
def user_requested_by()
|
115
115
|
response = get("users/self/requested-by")
|
116
116
|
response
|
117
117
|
end
|
118
118
|
|
119
|
-
# Returns most recent media items from the currently authorized user's feed
|
119
|
+
# Returns most recent media items from the currently authorized user's feed
|
120
120
|
#
|
121
121
|
# @overload user_media_feed(options={})
|
122
122
|
# @param options [Hash] A customizable set of options.
|
@@ -190,7 +190,7 @@ module Instagram
|
|
190
190
|
# @return [Hashie::Mash]
|
191
191
|
# @example Return the relationship status between the currently authenticated user and @mikeyk
|
192
192
|
# Instagram.user_relationship(4) # @mikeyk user ID being 4
|
193
|
-
# @see http://instagram.com/developer/endpoints/relationships
|
193
|
+
# @see http://instagram.com/developer/endpoints/relationships/#get_relationship
|
194
194
|
# @format :json
|
195
195
|
# @authenticated true
|
196
196
|
# @rate_limited true
|
@@ -207,7 +207,7 @@ module Instagram
|
|
207
207
|
# @return [Hashie::Mash]
|
208
208
|
# @example Request the current user to follow the target user
|
209
209
|
# Instagram.follow_user(4)
|
210
|
-
# @see http://instagram.com/developer/endpoints/relationships
|
210
|
+
# @see http://instagram.com/developer/endpoints/relationships/#post_relationship
|
211
211
|
# @format :json
|
212
212
|
# @authenticated true
|
213
213
|
# @rate_limited true
|
@@ -225,7 +225,7 @@ module Instagram
|
|
225
225
|
# @return [Hashie::Mash]
|
226
226
|
# @example Remove a follows relationship between the current user and the target user
|
227
227
|
# Instagram.unfollow_user(4)
|
228
|
-
# @see http://instagram.com/developer/endpoints/relationships
|
228
|
+
# @see http://instagram.com/developer/endpoints/relationships/#post_relationship
|
229
229
|
# @format :json
|
230
230
|
# @authenticated true
|
231
231
|
# @rate_limited true
|
@@ -243,7 +243,7 @@ module Instagram
|
|
243
243
|
# @return [Hashie::Mash]
|
244
244
|
# @example Block a relationship between the current user and the target user
|
245
245
|
# Instagram.block_user(4)
|
246
|
-
# @see http://instagram.com/developer/endpoints/relationships
|
246
|
+
# @see http://instagram.com/developer/endpoints/relationships/#post_relationship
|
247
247
|
# @format :json
|
248
248
|
# @authenticated true
|
249
249
|
# @rate_limited true
|
@@ -261,7 +261,7 @@ module Instagram
|
|
261
261
|
# @return [Hashie::Mash]
|
262
262
|
# @example Remove a relationship block between the current user and the target user
|
263
263
|
# Instagram.unblock_user(4)
|
264
|
-
# @see http://instagram.com/developer/endpoints/relationships
|
264
|
+
# @see http://instagram.com/developer/endpoints/relationships/#post_relationship
|
265
265
|
# @format :json
|
266
266
|
# @authenticated true
|
267
267
|
# @rate_limited true
|
@@ -279,7 +279,7 @@ module Instagram
|
|
279
279
|
# @return [Hashie::Mash]
|
280
280
|
# @example Approve a relationship request between the current user and the target user
|
281
281
|
# Instagram.approve_user(4)
|
282
|
-
# @see http://instagram.com/developer/endpoints/relationships
|
282
|
+
# @see http://instagram.com/developer/endpoints/relationships/#post_relationship
|
283
283
|
# @format :json
|
284
284
|
# @authenticated true
|
285
285
|
# @rate_limited true
|
@@ -297,7 +297,7 @@ module Instagram
|
|
297
297
|
# @return [Hashie::Mash]
|
298
298
|
# @example Deny a relationship request between the current user and the target user
|
299
299
|
# Instagram.deny_user(4)
|
300
|
-
# @see http://instagram.com/developer/endpoints/relationships
|
300
|
+
# @see http://instagram.com/developer/endpoints/relationships/#post_relationship
|
301
301
|
# @format :json
|
302
302
|
# @authenticated true
|
303
303
|
# @rate_limited true
|
@@ -2,6 +2,19 @@ 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'
|
6
|
+
# ==== Examples
|
7
|
+
#
|
8
|
+
# client = Instagram.client(:access_token => session[:access_token])
|
9
|
+
# response = client.utils_raw_response
|
10
|
+
# remaining = response.headers[:x_ratelimit_remaining]
|
11
|
+
# limit = response.headers[:x_ratelimit_limit]
|
12
|
+
#
|
13
|
+
def utils_raw_response
|
14
|
+
response = get('users/self/feed',nil,true)
|
15
|
+
response
|
16
|
+
end
|
17
|
+
|
5
18
|
private
|
6
19
|
|
7
20
|
# Returns the configured user name or the user name of the authenticated user
|
@@ -6,22 +6,22 @@ module Instagram
|
|
6
6
|
module Configuration
|
7
7
|
# An array of valid keys in the options hash when configuring a {Instagram::API}
|
8
8
|
VALID_OPTIONS_KEYS = [
|
9
|
+
:access_token,
|
9
10
|
:adapter,
|
10
11
|
:client_id,
|
11
12
|
:client_secret,
|
13
|
+
:connection_options,
|
12
14
|
:scope,
|
13
|
-
:
|
15
|
+
:redirect_uri,
|
14
16
|
:endpoint,
|
15
17
|
:format,
|
18
|
+
:proxy,
|
16
19
|
:user_agent,
|
17
|
-
:
|
20
|
+
:no_response_wrapper
|
18
21
|
].freeze
|
19
22
|
|
20
|
-
#
|
21
|
-
|
22
|
-
# @note Not all methods support the XML format.
|
23
|
-
VALID_FORMATS = [
|
24
|
-
:json].freeze
|
23
|
+
# By default, don't set a user access token
|
24
|
+
DEFAULT_ACCESS_TOKEN = nil
|
25
25
|
|
26
26
|
# The adapter that will be used to connect if none is set
|
27
27
|
#
|
@@ -34,14 +34,8 @@ module Instagram
|
|
34
34
|
# By default, don't set an application secret
|
35
35
|
DEFAULT_CLIENT_SECRET = nil
|
36
36
|
|
37
|
-
# By default, don't set
|
38
|
-
|
39
|
-
|
40
|
-
# By default, don't set a user access token
|
41
|
-
DEFAULT_ACCESS_TOKEN = nil
|
42
|
-
|
43
|
-
# By default, don't set a user scope
|
44
|
-
DEFAULT_SCOPE = nil
|
37
|
+
# By default, don't set any connection options
|
38
|
+
DEFAULT_CONNECTION_OPTIONS = {}
|
45
39
|
|
46
40
|
# The endpoint that will be used to connect if none is set
|
47
41
|
#
|
@@ -56,9 +50,24 @@ module Instagram
|
|
56
50
|
# By default, don't use a proxy server
|
57
51
|
DEFAULT_PROXY = nil
|
58
52
|
|
53
|
+
# By default, don't set an application redirect uri
|
54
|
+
DEFAULT_REDIRECT_URI = nil
|
55
|
+
|
56
|
+
# By default, don't set a user scope
|
57
|
+
DEFAULT_SCOPE = nil
|
58
|
+
|
59
|
+
# By default, don't wrap responses with meta data (i.e. pagination)
|
60
|
+
DEFAULT_NO_RESPONSE_WRAPPER = false
|
61
|
+
|
59
62
|
# The user agent that will be sent to the API endpoint if none is set
|
60
63
|
DEFAULT_USER_AGENT = "Instagram Ruby Gem #{Instagram::VERSION}".freeze
|
61
64
|
|
65
|
+
# An array of valid request/response formats
|
66
|
+
#
|
67
|
+
# @note Not all methods support the XML format.
|
68
|
+
VALID_FORMATS = [
|
69
|
+
:json].freeze
|
70
|
+
|
62
71
|
# @private
|
63
72
|
attr_accessor *VALID_OPTIONS_KEYS
|
64
73
|
|
@@ -81,15 +90,18 @@ module Instagram
|
|
81
90
|
|
82
91
|
# Reset all configuration options to defaults
|
83
92
|
def reset
|
84
|
-
self.
|
85
|
-
self.
|
86
|
-
self.
|
87
|
-
self.
|
88
|
-
self.
|
89
|
-
self.
|
90
|
-
self.
|
91
|
-
self.
|
92
|
-
self.
|
93
|
+
self.access_token = DEFAULT_ACCESS_TOKEN
|
94
|
+
self.adapter = DEFAULT_ADAPTER
|
95
|
+
self.client_id = DEFAULT_CLIENT_ID
|
96
|
+
self.client_secret = DEFAULT_CLIENT_SECRET
|
97
|
+
self.connection_options = DEFAULT_CONNECTION_OPTIONS
|
98
|
+
self.scope = DEFAULT_SCOPE
|
99
|
+
self.redirect_uri = DEFAULT_REDIRECT_URI
|
100
|
+
self.endpoint = DEFAULT_ENDPOINT
|
101
|
+
self.format = DEFAULT_FORMAT
|
102
|
+
self.proxy = DEFAULT_PROXY
|
103
|
+
self.user_agent = DEFAULT_USER_AGENT
|
104
|
+
self.no_response_wrapper= DEFAULT_NO_RESPONSE_WRAPPER
|
93
105
|
end
|
94
106
|
end
|
95
|
-
end
|
107
|
+
end
|