instagram 0.8.2 → 0.8.3
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/instagram.gemspec +2 -2
- data/lib/faraday/oauth2.rb +5 -2
- data/lib/faraday/raise_http_exception.rb +45 -0
- data/lib/instagram/client/subscriptions.rb +1 -0
- data/lib/instagram/connection.rb +4 -4
- data/lib/instagram/version.rb +1 -1
- data/spec/instagram/client_spec.rb +1 -1
- data/spec/instagram_spec.rb +2 -3
- metadata +20 -21
- data/lib/faraday/raise_http_4xx.rb +0 -37
- data/lib/faraday/raise_http_5xx.rb +0 -29
data/instagram.gemspec
CHANGED
@@ -5,8 +5,8 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.add_development_dependency('rspec', '~> 2.4')
|
6
6
|
s.add_development_dependency('webmock', '~> 1.6')
|
7
7
|
s.add_development_dependency('bluecloth', '~> 2.0.11')
|
8
|
-
s.add_runtime_dependency('faraday', '~> 0.
|
9
|
-
s.add_runtime_dependency('faraday_middleware', '~> 0.
|
8
|
+
s.add_runtime_dependency('faraday', '~> 0.7')
|
9
|
+
s.add_runtime_dependency('faraday_middleware', '~> 0.8')
|
10
10
|
s.add_runtime_dependency('multi_json', '~> 1.0.3')
|
11
11
|
s.add_runtime_dependency('hashie', '>= 0.4.0')
|
12
12
|
s.authors = ["Shayne Sweeney"]
|
data/lib/faraday/oauth2.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
|
3
3
|
# @private
|
4
|
-
module
|
4
|
+
module FaradayMiddleware
|
5
5
|
# @private
|
6
|
-
class
|
6
|
+
class OAuth2 < Faraday::Middleware
|
7
7
|
def call(env)
|
8
8
|
|
9
9
|
if env[:method] == :get or env[:method] == :delete
|
10
10
|
env[:url].query_values = {} if env[:url].query_values.nil?
|
11
|
+
|
11
12
|
if @access_token and not env[:url].query_values["client_secret"]
|
12
13
|
env[:url].query_values = env[:url].query_values.merge(:access_token => @access_token)
|
13
14
|
env[:request_headers] = env[:request_headers].merge('Authorization' => "Token token=\"#{@access_token}\"")
|
@@ -24,6 +25,8 @@ module Faraday
|
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
28
|
+
env[:url].query_values = nil if env[:url].query_values == {}
|
29
|
+
|
27
30
|
@app.call env
|
28
31
|
end
|
29
32
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
# @private
|
4
|
+
module FaradayMiddleware
|
5
|
+
# @private
|
6
|
+
class RaiseHttpException < Faraday::Middleware
|
7
|
+
def call(env)
|
8
|
+
@app.call(env).on_complete do |response|
|
9
|
+
case response[:status].to_i
|
10
|
+
when 400
|
11
|
+
raise Instagram::BadRequest, error_message_400(response)
|
12
|
+
when 404
|
13
|
+
raise Instagram::NotFound, error_message_400(response)
|
14
|
+
when 500
|
15
|
+
raise Instagram::InternalServerError, error_message_500(response, "Something is technically wrong.")
|
16
|
+
when 503
|
17
|
+
raise Instagram::ServiceUnavailable, error_message_500(response, "Instagram is rate limiting your requests.")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(app)
|
23
|
+
super app
|
24
|
+
@parser = nil
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def error_message_400(response)
|
30
|
+
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]}#{error_body(response[:body])}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def error_body(body)
|
34
|
+
if body.nil?
|
35
|
+
nil
|
36
|
+
elsif body['meta'] and body['meta']['error_message'] and not body['meta']['error_message'].empty?
|
37
|
+
": #{body['meta']['error_message']}"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def error_message_500(response, body=nil)
|
42
|
+
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{[response[:status].to_s + ':', body].compact.join(' ')}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/instagram/connection.rb
CHANGED
@@ -15,16 +15,16 @@ module Instagram
|
|
15
15
|
}
|
16
16
|
|
17
17
|
Faraday::Connection.new(options) do |connection|
|
18
|
-
connection.use
|
18
|
+
connection.use FaradayMiddleware::OAuth2, client_id, access_token
|
19
|
+
connection.use Faraday::Request::UrlEncoded
|
19
20
|
connection.adapter(adapter)
|
20
|
-
connection.use
|
21
|
+
connection.use FaradayMiddleware::Mashify unless raw
|
21
22
|
unless raw
|
22
23
|
case format.to_s.downcase
|
23
24
|
when 'json' then connection.use Faraday::Response::ParseJson
|
24
25
|
end
|
25
26
|
end
|
26
|
-
connection.use
|
27
|
-
connection.use Faraday::Response::Mashify unless raw
|
27
|
+
connection.use FaradayMiddleware::RaiseHttpException
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
data/lib/instagram/version.rb
CHANGED
@@ -5,7 +5,7 @@ describe Instagram::Client do
|
|
5
5
|
client = Instagram::Client.new
|
6
6
|
endpoint = URI.parse(client.endpoint)
|
7
7
|
connection = client.send(:connection).build_url(nil).to_s
|
8
|
-
connection.should == endpoint.to_s
|
8
|
+
(connection + '/').should == endpoint.to_s
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should not cache the user account across clients" do
|
data/spec/instagram_spec.rb
CHANGED
@@ -14,8 +14,7 @@ describe Instagram do
|
|
14
14
|
|
15
15
|
it "should get the correct resource" do
|
16
16
|
Instagram.user_media_feed()
|
17
|
-
a_get("users/self/feed.json").
|
18
|
-
should have_been_made
|
17
|
+
a_get("users/self/feed.json").should have_been_made
|
19
18
|
end
|
20
19
|
|
21
20
|
it "should return the same results as a client" do
|
@@ -94,4 +93,4 @@ describe Instagram do
|
|
94
93
|
end
|
95
94
|
end
|
96
95
|
end
|
97
|
-
end
|
96
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instagram
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-25 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70311601093360 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.4'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70311601093360
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: webmock
|
27
|
-
requirement: &
|
27
|
+
requirement: &70311601092260 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.6'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70311601092260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bluecloth
|
38
|
-
requirement: &
|
38
|
+
requirement: &70311601091380 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,32 +43,32 @@ dependencies:
|
|
43
43
|
version: 2.0.11
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70311601091380
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: faraday
|
49
|
-
requirement: &
|
49
|
+
requirement: &70311601090160 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.7'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70311601090160
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: faraday_middleware
|
60
|
-
requirement: &
|
60
|
+
requirement: &70311601089040 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: 0.
|
65
|
+
version: '0.8'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70311601089040
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: multi_json
|
71
|
-
requirement: &
|
71
|
+
requirement: &70311601087820 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.0.3
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70311601087820
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: hashie
|
82
|
-
requirement: &
|
82
|
+
requirement: &70311601086700 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: 0.4.0
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70311601086700
|
91
91
|
description: A Ruby wrapper for the Instagram REST and Search APIs
|
92
92
|
email:
|
93
93
|
- shayne@instagr.am
|
@@ -104,8 +104,7 @@ files:
|
|
104
104
|
- Rakefile
|
105
105
|
- instagram.gemspec
|
106
106
|
- lib/faraday/oauth2.rb
|
107
|
-
- lib/faraday/
|
108
|
-
- lib/faraday/raise_http_5xx.rb
|
107
|
+
- lib/faraday/raise_http_exception.rb
|
109
108
|
- lib/instagram.rb
|
110
109
|
- lib/instagram/api.rb
|
111
110
|
- lib/instagram/client.rb
|
@@ -190,7 +189,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
190
189
|
version: '0'
|
191
190
|
segments:
|
192
191
|
- 0
|
193
|
-
hash: -
|
192
|
+
hash: -68303577616785186
|
194
193
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
194
|
none: false
|
196
195
|
requirements:
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
|
3
|
-
# @private
|
4
|
-
module Faraday
|
5
|
-
# @private
|
6
|
-
class Response::RaiseHttp4xx < Response::Middleware
|
7
|
-
def self.register_on_complete(env)
|
8
|
-
env[:response].on_complete do |response|
|
9
|
-
case response[:status].to_i
|
10
|
-
when 400
|
11
|
-
raise Instagram::BadRequest, error_message(response)
|
12
|
-
when 404
|
13
|
-
raise Instagram::NotFound, error_message(response)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def initialize(app)
|
19
|
-
super
|
20
|
-
@parser = nil
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def self.error_message(response)
|
26
|
-
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]}#{error_body(response[:body])}"
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.error_body(body)
|
30
|
-
if body.nil?
|
31
|
-
nil
|
32
|
-
elsif body['meta'] and body['meta']['error_message'] and not body['meta']['error_message'].empty?
|
33
|
-
": #{body['meta']['error_message']}"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
|
3
|
-
# @private
|
4
|
-
module Faraday
|
5
|
-
# @private
|
6
|
-
class Response::RaiseHttp5xx < Response::Middleware
|
7
|
-
def self.register_on_complete(env)
|
8
|
-
env[:response].on_complete do |response|
|
9
|
-
case response[:status].to_i
|
10
|
-
when 500
|
11
|
-
raise Instagram::InternalServerError, error_message(response, "Something is technically wrong.")
|
12
|
-
when 503
|
13
|
-
raise Instagram::ServiceUnavailable, error_message(response, "Instagram is rate limiting your requests.")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def initialize(app)
|
19
|
-
super
|
20
|
-
@parser = nil
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def self.error_message(response, body=nil)
|
26
|
-
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{[response[:status].to_s + ':', body].compact.join(' ')}"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|