douban_api 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/douban_api/api.rb +4 -0
- data/lib/douban_api/client/movie.rb +1 -1
- data/lib/douban_api/connection.rb +6 -1
- data/lib/douban_api/error.rb +22 -2
- data/lib/douban_api/request.rb +13 -0
- data/lib/douban_api/version.rb +1 -1
- data/lib/faraday/raise_http_exception.rb +3 -17
- metadata +19 -46
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 85c52bbf4cb09831305e2d3f901fdc8e7efa87ec
|
4
|
+
data.tar.gz: 61c660a6fd0af1a79707bdd7c0973865befbec94
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: caf1e81fc3f88c462cf5ae5cbf0ba0030e21bf2a7a9a5a6d98ac4909ba24b11b21b07b1156a19ccf1f8269060193e3cece127f6196043e68e134d052e4e94aa9
|
7
|
+
data.tar.gz: 5a5d1882acdc77224d0daa4696965dd9e55a8c4ad5f981893262cee8f18ef0fe564bd4ed47b86ec2a788e3738f62d7a97396b1c05d984c3b0d951d88914f1f38
|
data/lib/douban_api/api.rb
CHANGED
@@ -16,10 +16,12 @@ module Douban
|
|
16
16
|
}
|
17
17
|
|
18
18
|
Faraday::Connection.new(options) do |connection|
|
19
|
+
# requests
|
19
20
|
connection.use FaradayMiddleware::OAuth2, client_id, access_token
|
20
|
-
connection.use FaradayMiddleware::Mashify unless raw
|
21
21
|
connection.use Faraday::Request::Multipart
|
22
22
|
connection.use Faraday::Request::UrlEncoded
|
23
|
+
|
24
|
+
# responses
|
23
25
|
connection.use FaradayMiddleware::Mashify unless raw
|
24
26
|
unless raw
|
25
27
|
case format.to_s.downcase
|
@@ -27,6 +29,9 @@ module Douban
|
|
27
29
|
end
|
28
30
|
end
|
29
31
|
connection.use FaradayMiddleware::RaiseHttpException
|
32
|
+
# connection.use Faraday::Response::Logger
|
33
|
+
|
34
|
+
# adapter
|
30
35
|
connection.adapter(adapter)
|
31
36
|
end
|
32
37
|
end
|
data/lib/douban_api/error.rb
CHANGED
@@ -4,10 +4,30 @@ module Douban
|
|
4
4
|
class Error < StandardError; end
|
5
5
|
|
6
6
|
# Raised when Douban returns the HTTP status code 400
|
7
|
-
class BadRequest < Error
|
7
|
+
class BadRequest < Error
|
8
|
+
attr_reader :code, :msg
|
9
|
+
|
10
|
+
def initialize(body)
|
11
|
+
@code, @msg = 0, ""
|
12
|
+
parse_error_body(body)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def parse_error_body(body)
|
17
|
+
# body gets passed as a string, not sure if it is passed as something else from other spots?
|
18
|
+
if not body.nil? and not body.empty? and body.kind_of?(String)
|
19
|
+
# removed multi_json thanks to wesnolte's commit
|
20
|
+
body = ::JSON.parse(body)
|
21
|
+
|
22
|
+
if body['code'] and body['msg']
|
23
|
+
@code, @msg = body['code'], body['msg']
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
8
28
|
|
9
29
|
# Raised when Douban returns the HTTP status code 404
|
10
|
-
class NotFound <
|
30
|
+
class NotFound < BadRequest; end
|
11
31
|
|
12
32
|
# Raised when Douban returns the HTTP status code 500
|
13
33
|
class InternalServerError < Error; end
|
data/lib/douban_api/request.rb
CHANGED
@@ -35,7 +35,20 @@ module Douban
|
|
35
35
|
request.body = options unless options.empty?
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
@rate_limit_info = extract_rate_limit_info(response.headers)
|
40
|
+
|
38
41
|
raw ? response : response.body
|
39
42
|
end
|
43
|
+
|
44
|
+
def extract_rate_limit_info(headers)
|
45
|
+
headers.reject do |k, v|
|
46
|
+
!['x-ratelimit-limit',
|
47
|
+
'x-ratelimit-limit2',
|
48
|
+
'x-ratelimit-remaining',
|
49
|
+
'x-ratelimit-remaining2'
|
50
|
+
].include?(k)
|
51
|
+
end
|
52
|
+
end
|
40
53
|
end
|
41
54
|
end
|
data/lib/douban_api/version.rb
CHANGED
@@ -9,9 +9,9 @@ module FaradayMiddleware
|
|
9
9
|
@app.call(env).on_complete do |response|
|
10
10
|
case response[:status].to_i
|
11
11
|
when 400
|
12
|
-
raise Douban::BadRequest, error_message_400(response)
|
12
|
+
raise Douban::BadRequest.new(response[:body]), error_message_400(response)
|
13
13
|
when 404
|
14
|
-
raise Douban::NotFound, error_message_400(response)
|
14
|
+
raise Douban::NotFound.new(response[:body]), error_message_400(response)
|
15
15
|
when 500
|
16
16
|
raise Douban::InternalServerError, error_message_500(response, "Something is technically wrong.")
|
17
17
|
when 503
|
@@ -28,21 +28,7 @@ module FaradayMiddleware
|
|
28
28
|
private
|
29
29
|
|
30
30
|
def error_message_400(response)
|
31
|
-
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]}
|
32
|
-
end
|
33
|
-
|
34
|
-
def error_body(body)
|
35
|
-
# body gets passed as a string, not sure if it is passed as something else from other spots?
|
36
|
-
if not body.nil? and not body.empty? and body.kind_of?(String)
|
37
|
-
# removed multi_json thanks to wesnolte's commit
|
38
|
-
body = ::JSON.parse(body)
|
39
|
-
end
|
40
|
-
|
41
|
-
if body.nil?
|
42
|
-
nil
|
43
|
-
elsif body['meta'] and body['meta']['error_message'] and not body['meta']['error_message'].empty?
|
44
|
-
": #{body['meta']['error_message']}"
|
45
|
-
end
|
31
|
+
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]}"
|
46
32
|
end
|
47
33
|
|
48
34
|
def error_message_500(response, body=nil)
|
metadata
CHANGED
@@ -1,22 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: douban_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Sean Lee
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-10-05 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: faraday
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0.7'
|
22
20
|
- - <
|
@@ -25,9 +23,8 @@ dependencies:
|
|
25
23
|
type: :runtime
|
26
24
|
prerelease: false
|
27
25
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
26
|
requirements:
|
30
|
-
- -
|
27
|
+
- - '>='
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: '0.7'
|
33
30
|
- - <
|
@@ -36,7 +33,6 @@ dependencies:
|
|
36
33
|
- !ruby/object:Gem::Dependency
|
37
34
|
name: faraday_middleware
|
38
35
|
requirement: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
36
|
requirements:
|
41
37
|
- - ~>
|
42
38
|
- !ruby/object:Gem::Version
|
@@ -44,7 +40,6 @@ dependencies:
|
|
44
40
|
type: :runtime
|
45
41
|
prerelease: false
|
46
42
|
version_requirements: !ruby/object:Gem::Requirement
|
47
|
-
none: false
|
48
43
|
requirements:
|
49
44
|
- - ~>
|
50
45
|
- !ruby/object:Gem::Version
|
@@ -52,9 +47,8 @@ dependencies:
|
|
52
47
|
- !ruby/object:Gem::Dependency
|
53
48
|
name: multi_json
|
54
49
|
requirement: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
50
|
requirements:
|
57
|
-
- -
|
51
|
+
- - '>='
|
58
52
|
- !ruby/object:Gem::Version
|
59
53
|
version: 1.0.3
|
60
54
|
- - ~>
|
@@ -63,9 +57,8 @@ dependencies:
|
|
63
57
|
type: :runtime
|
64
58
|
prerelease: false
|
65
59
|
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
60
|
requirements:
|
68
|
-
- -
|
61
|
+
- - '>='
|
69
62
|
- !ruby/object:Gem::Version
|
70
63
|
version: 1.0.3
|
71
64
|
- - ~>
|
@@ -74,23 +67,20 @@ dependencies:
|
|
74
67
|
- !ruby/object:Gem::Dependency
|
75
68
|
name: hashie
|
76
69
|
requirement: !ruby/object:Gem::Requirement
|
77
|
-
none: false
|
78
70
|
requirements:
|
79
|
-
- -
|
71
|
+
- - '>='
|
80
72
|
- !ruby/object:Gem::Version
|
81
73
|
version: 0.4.0
|
82
74
|
type: :runtime
|
83
75
|
prerelease: false
|
84
76
|
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
none: false
|
86
77
|
requirements:
|
87
|
-
- -
|
78
|
+
- - '>='
|
88
79
|
- !ruby/object:Gem::Version
|
89
80
|
version: 0.4.0
|
90
81
|
- !ruby/object:Gem::Dependency
|
91
82
|
name: json
|
92
83
|
requirement: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
84
|
requirements:
|
95
85
|
- - ~>
|
96
86
|
- !ruby/object:Gem::Version
|
@@ -98,7 +88,6 @@ dependencies:
|
|
98
88
|
type: :development
|
99
89
|
prerelease: false
|
100
90
|
version_requirements: !ruby/object:Gem::Requirement
|
101
|
-
none: false
|
102
91
|
requirements:
|
103
92
|
- - ~>
|
104
93
|
- !ruby/object:Gem::Version
|
@@ -106,7 +95,6 @@ dependencies:
|
|
106
95
|
- !ruby/object:Gem::Dependency
|
107
96
|
name: rspec
|
108
97
|
requirement: !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
98
|
requirements:
|
111
99
|
- - ~>
|
112
100
|
- !ruby/object:Gem::Version
|
@@ -114,7 +102,6 @@ dependencies:
|
|
114
102
|
type: :development
|
115
103
|
prerelease: false
|
116
104
|
version_requirements: !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
105
|
requirements:
|
119
106
|
- - ~>
|
120
107
|
- !ruby/object:Gem::Version
|
@@ -122,7 +109,6 @@ dependencies:
|
|
122
109
|
- !ruby/object:Gem::Dependency
|
123
110
|
name: webmock
|
124
111
|
requirement: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
112
|
requirements:
|
127
113
|
- - ~>
|
128
114
|
- !ruby/object:Gem::Version
|
@@ -130,7 +116,6 @@ dependencies:
|
|
130
116
|
type: :development
|
131
117
|
prerelease: false
|
132
118
|
version_requirements: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
119
|
requirements:
|
135
120
|
- - ~>
|
136
121
|
- !ruby/object:Gem::Version
|
@@ -138,7 +123,6 @@ dependencies:
|
|
138
123
|
- !ruby/object:Gem::Dependency
|
139
124
|
name: bluecloth
|
140
125
|
requirement: !ruby/object:Gem::Requirement
|
141
|
-
none: false
|
142
126
|
requirements:
|
143
127
|
- - ~>
|
144
128
|
- !ruby/object:Gem::Version
|
@@ -146,7 +130,6 @@ dependencies:
|
|
146
130
|
type: :development
|
147
131
|
prerelease: false
|
148
132
|
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
133
|
requirements:
|
151
134
|
- - ~>
|
152
135
|
- !ruby/object:Gem::Version
|
@@ -154,49 +137,43 @@ dependencies:
|
|
154
137
|
- !ruby/object:Gem::Dependency
|
155
138
|
name: rake
|
156
139
|
requirement: !ruby/object:Gem::Requirement
|
157
|
-
none: false
|
158
140
|
requirements:
|
159
|
-
- -
|
141
|
+
- - '>='
|
160
142
|
- !ruby/object:Gem::Version
|
161
143
|
version: '0'
|
162
144
|
type: :development
|
163
145
|
prerelease: false
|
164
146
|
version_requirements: !ruby/object:Gem::Requirement
|
165
|
-
none: false
|
166
147
|
requirements:
|
167
|
-
- -
|
148
|
+
- - '>='
|
168
149
|
- !ruby/object:Gem::Version
|
169
150
|
version: '0'
|
170
151
|
- !ruby/object:Gem::Dependency
|
171
152
|
name: yard
|
172
153
|
requirement: !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
154
|
requirements:
|
175
|
-
- -
|
155
|
+
- - '>='
|
176
156
|
- !ruby/object:Gem::Version
|
177
157
|
version: '0'
|
178
158
|
type: :development
|
179
159
|
prerelease: false
|
180
160
|
version_requirements: !ruby/object:Gem::Requirement
|
181
|
-
none: false
|
182
161
|
requirements:
|
183
|
-
- -
|
162
|
+
- - '>='
|
184
163
|
- !ruby/object:Gem::Version
|
185
164
|
version: '0'
|
186
165
|
- !ruby/object:Gem::Dependency
|
187
166
|
name: pry
|
188
167
|
requirement: !ruby/object:Gem::Requirement
|
189
|
-
none: false
|
190
168
|
requirements:
|
191
|
-
- -
|
169
|
+
- - '>='
|
192
170
|
- !ruby/object:Gem::Version
|
193
171
|
version: '0'
|
194
172
|
type: :development
|
195
173
|
prerelease: false
|
196
174
|
version_requirements: !ruby/object:Gem::Requirement
|
197
|
-
none: false
|
198
175
|
requirements:
|
199
|
-
- -
|
176
|
+
- - '>='
|
200
177
|
- !ruby/object:Gem::Version
|
201
178
|
version: '0'
|
202
179
|
description: A Ruby wrapper for the Douban API v2 based on instagram's official ruby
|
@@ -241,30 +218,26 @@ files:
|
|
241
218
|
- lib/faraday/raise_http_exception.rb
|
242
219
|
homepage:
|
243
220
|
licenses: []
|
221
|
+
metadata: {}
|
244
222
|
post_install_message:
|
245
223
|
rdoc_options: []
|
246
224
|
require_paths:
|
247
225
|
- lib
|
248
226
|
required_ruby_version: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
227
|
requirements:
|
251
|
-
- -
|
228
|
+
- - '>='
|
252
229
|
- !ruby/object:Gem::Version
|
253
230
|
version: '0'
|
254
|
-
segments:
|
255
|
-
- 0
|
256
|
-
hash: 2295320559761503597
|
257
231
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
258
|
-
none: false
|
259
232
|
requirements:
|
260
|
-
- -
|
233
|
+
- - '>='
|
261
234
|
- !ruby/object:Gem::Version
|
262
235
|
version: 1.3.6
|
263
236
|
requirements: []
|
264
237
|
rubyforge_project:
|
265
|
-
rubygems_version:
|
238
|
+
rubygems_version: 2.0.3
|
266
239
|
signing_key:
|
267
|
-
specification_version:
|
240
|
+
specification_version: 4
|
268
241
|
summary: Ruby wrapper for the Douban API v2
|
269
242
|
test_files: []
|
270
243
|
has_rdoc:
|