douban_api 0.1.5 → 0.1.6
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 +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:
|