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 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
@@ -17,6 +17,10 @@ module Douban
17
17
  end
18
18
  end
19
19
 
20
+ def get_rate_limit_info
21
+ @rate_limit_info || {}
22
+ end
23
+
20
24
  include Connection
21
25
  include Request
22
26
  include OAuth
@@ -81,7 +81,7 @@ module Douban
81
81
  # Douban.search_movies("伍迪·艾伦")
82
82
  def search_movies(q, options={})
83
83
  response = get "v2/movie/search", options.merge(:q => q)
84
- response["movies"]
84
+ response["subjects"]
85
85
  end
86
86
 
87
87
  # 搜索电影(通过标签)
@@ -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
@@ -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; end
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 < Error; end
30
+ class NotFound < BadRequest; end
11
31
 
12
32
  # Raised when Douban returns the HTTP status code 500
13
33
  class InternalServerError < Error; end
@@ -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
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module Douban
3
- VERSION = '0.1.5'.freeze unless defined?(::Douban::VERSION)
3
+ VERSION = '0.1.6'.freeze unless defined?(::Douban::VERSION)
4
4
  end
@@ -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]}#{error_body(response[:body])}"
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
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-03-25 00:00:00.000000000 Z
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: 1.8.25
238
+ rubygems_version: 2.0.3
266
239
  signing_key:
267
- specification_version: 3
240
+ specification_version: 4
268
241
  summary: Ruby wrapper for the Douban API v2
269
242
  test_files: []
270
243
  has_rdoc: