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 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: