open_taobao 0.1.0 → 0.2.0
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/.rspec +1 -0
- data/.travis.yml +1 -3
- data/CHNAGELOG.md +7 -0
- data/README.md +3 -1
- data/lib/open_taobao.rb +3 -3
- data/lib/open_taobao/hash_ext.rb +7 -0
- data/lib/open_taobao/open_taobao.rb +34 -6
- data/lib/open_taobao/version.rb +1 -1
- data/open_taobao.gemspec +2 -2
- data/spec/open_taobao_spec.rb +59 -0
- metadata +40 -24
- checksums.yaml +0 -7
data/.rspec
CHANGED
data/.travis.yml
CHANGED
data/CHNAGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## 2013-08-25 - v0.2.0 released.
|
2
|
+
|
3
|
+
* Besides HTTP `get`, `post` is supported.
|
4
|
+
* `get!`, `post!` added, these methods will raise OpenTaobao::Error when get an `error_response`.
|
5
|
+
* Remove `json` dependency in favor of `multi_json`.
|
6
|
+
* Remove `active_support` dependency, add a ActiveSupport compatible Hash hack to converted to http parameters
|
7
|
+
|
1
8
|
## 2013-05-12
|
2
9
|
|
3
10
|
pid is not required in config file, but will be loaded to config for back compatibility.
|
data/README.md
CHANGED
@@ -38,7 +38,7 @@ Open the file and configure it with your taobao info.
|
|
38
38
|
|
39
39
|
Notice: `app_key`, `secret_key`, `endpoint` must be included in your YAML file, otherwise OpenTaobao.load will fail.
|
40
40
|
|
41
|
-
call `OpenTaobao.get`,with taobao parameters:
|
41
|
+
call `OpenTaobao.get` or `OpenTaoboa.post`,with taobao parameters:
|
42
42
|
|
43
43
|
hash = OpenTaobao.get(
|
44
44
|
:method => "taobao.itemcats.get",
|
@@ -48,6 +48,8 @@ call `OpenTaobao.get`,with taobao parameters:
|
|
48
48
|
|
49
49
|
The return data will be converted to a Hash automatically.
|
50
50
|
|
51
|
+
Also `OpenTaobao.get!` and `OpenTaobao.post!` are avaliable, which will raise an `OpenTaobao::Error` if a `error_response` receieved.
|
52
|
+
|
51
53
|
### plain ruby
|
52
54
|
|
53
55
|
OpenTaobao.config = {
|
data/lib/open_taobao.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'active_support/core_ext/object'
|
2
1
|
require 'digest'
|
3
2
|
require 'faraday'
|
4
|
-
require '
|
5
|
-
require 'open_taobao/version'
|
3
|
+
require 'multi_json'
|
6
4
|
require 'yaml'
|
7
5
|
|
6
|
+
require 'open_taobao/version'
|
7
|
+
require 'open_taobao/hash_ext'
|
8
8
|
require 'open_taobao/open_taobao'
|
9
9
|
|
10
10
|
require 'open_taobao/railtie' if defined? Rails
|
@@ -26,6 +26,8 @@ module OpenTaobao
|
|
26
26
|
API_VERSION = '2.0'
|
27
27
|
USER_AGENT = "open_taobao-v#{VERSION}"
|
28
28
|
|
29
|
+
class Error < StandardError; end
|
30
|
+
|
29
31
|
class << self
|
30
32
|
attr_accessor :config, :session
|
31
33
|
|
@@ -93,8 +95,9 @@ module OpenTaobao
|
|
93
95
|
Digest::MD5::hexdigest(wrap_with_secret sorted_option_string(params)).upcase
|
94
96
|
end
|
95
97
|
|
98
|
+
# wrapped with secret_key
|
96
99
|
def wrap_with_secret(s)
|
97
|
-
config['secret_key']
|
100
|
+
"#{config['secret_key']}#{s}#{config['secret_key']}"
|
98
101
|
end
|
99
102
|
|
100
103
|
# Return sorted request parameter by request key
|
@@ -125,11 +128,15 @@ module OpenTaobao
|
|
125
128
|
}.merge params
|
126
129
|
end
|
127
130
|
|
128
|
-
|
129
|
-
def query_string(params)
|
131
|
+
def query_hash(params)
|
130
132
|
params = full_options params
|
131
133
|
params[:sign] = sign params
|
132
|
-
|
134
|
+
params
|
135
|
+
end
|
136
|
+
|
137
|
+
# Retrun query string with signature.
|
138
|
+
def query_string(params)
|
139
|
+
"?" + query_hash(params).to_query
|
133
140
|
end
|
134
141
|
|
135
142
|
# Return full url with signature.
|
@@ -139,14 +146,35 @@ module OpenTaobao
|
|
139
146
|
|
140
147
|
# Return a parsed JSON object.
|
141
148
|
def parse_result(data)
|
142
|
-
|
149
|
+
MultiJson.decode(data)
|
143
150
|
end
|
144
151
|
|
145
|
-
#
|
152
|
+
# Request by get method and return result in JSON format
|
146
153
|
def get(params)
|
147
154
|
path = query_string(params)
|
148
155
|
parse_result session.get(path).body
|
149
156
|
end
|
157
|
+
|
158
|
+
# Request by get method and return result in JSON format
|
159
|
+
# Raise OpenTaobao::Error if returned with error_response
|
160
|
+
def get!(params)
|
161
|
+
response = get params
|
162
|
+
raise Error.new(response['error_response']) if response.has_key?('error_response')
|
163
|
+
response
|
164
|
+
end
|
165
|
+
|
166
|
+
# Request by post method and return result in JSON format
|
167
|
+
def post(params)
|
168
|
+
parse_result session.post('', query_hash(params).to_query).body
|
169
|
+
end
|
170
|
+
|
171
|
+
# Request by post method and return result in JSON format
|
172
|
+
# Raise OpenTaobao::Error if returned with error_response
|
173
|
+
def post!(params)
|
174
|
+
response = post params
|
175
|
+
raise Error.new(response['error_response']) if response.has_key?('error_response')
|
176
|
+
response
|
177
|
+
end
|
150
178
|
end
|
151
179
|
end
|
152
180
|
|
data/lib/open_taobao/version.rb
CHANGED
data/open_taobao.gemspec
CHANGED
@@ -15,10 +15,10 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = OpenTaobao::VERSION
|
17
17
|
|
18
|
-
gem.add_dependency "
|
19
|
-
gem.add_dependency "json"
|
18
|
+
gem.add_dependency "multi_json"
|
20
19
|
gem.add_dependency "faraday"
|
21
20
|
gem.add_development_dependency "rspec"
|
21
|
+
gem.add_development_dependency "debugger"
|
22
22
|
gem.add_development_dependency "autotest"
|
23
23
|
gem.add_development_dependency "rake"
|
24
24
|
end
|
data/spec/open_taobao_spec.rb
CHANGED
@@ -146,6 +146,65 @@ describe OpenTaobao do
|
|
146
146
|
|
147
147
|
OpenTaobao.get(params)['itemcats_get_response']['item_cats']['item_cat'].should be_a(Array)
|
148
148
|
end
|
149
|
+
|
150
|
+
it "should support get! method" do
|
151
|
+
OpenTaobao.initialize_session
|
152
|
+
params = {
|
153
|
+
:method => "taobao.itemcats.get",
|
154
|
+
:fields => "cid,parent_id,name,is_parent",
|
155
|
+
:parent_cid => 0
|
156
|
+
}
|
157
|
+
|
158
|
+
OpenTaobao.get!(params)['itemcats_get_response']['item_cats']['item_cat'].should be_a(Array)
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should raise error by get! method" do
|
162
|
+
OpenTaobao.initialize_session
|
163
|
+
params = {
|
164
|
+
:method => "taobao.itemcats.no-method",
|
165
|
+
:fields => "cid,parent_id,name,is_parent",
|
166
|
+
:parent_cid => 0
|
167
|
+
}
|
168
|
+
|
169
|
+
expect {
|
170
|
+
OpenTaobao.get!(params)
|
171
|
+
}.to raise_error OpenTaobao::Error
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should support post method" do
|
175
|
+
OpenTaobao.initialize_session
|
176
|
+
params = {
|
177
|
+
:method => "taobao.itemcats.get",
|
178
|
+
:fields => "cid,parent_id,name,is_parent",
|
179
|
+
:parent_cid => 0
|
180
|
+
}
|
181
|
+
|
182
|
+
OpenTaobao.post(params)['itemcats_get_response']['item_cats']['item_cat'].should be_a(Array)
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should support post! method" do
|
186
|
+
OpenTaobao.initialize_session
|
187
|
+
params = {
|
188
|
+
:method => "taobao.itemcats.get",
|
189
|
+
:fields => "cid,parent_id,name,is_parent",
|
190
|
+
:parent_cid => 0
|
191
|
+
}
|
192
|
+
|
193
|
+
OpenTaobao.post!(params)['itemcats_get_response']['item_cats']['item_cat'].should be_a(Array)
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should raise error by post! method" do
|
197
|
+
OpenTaobao.initialize_session
|
198
|
+
params = {
|
199
|
+
:method => "taobao.itemcats.no-method",
|
200
|
+
:fields => "cid,parent_id,name,is_parent",
|
201
|
+
:parent_cid => 0
|
202
|
+
}
|
203
|
+
|
204
|
+
expect {
|
205
|
+
OpenTaobao.post!(params)
|
206
|
+
}.to raise_error OpenTaobao::Error
|
207
|
+
end
|
149
208
|
end
|
150
209
|
|
151
210
|
# OpenTaobao.load(File.expand_path('../taobao.yml',__FILE__))
|
metadata
CHANGED
@@ -1,97 +1,110 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: open_taobao
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- wongyouth
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-08-24 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: multi_json
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
31
|
+
name: faraday
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- - '>='
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '0'
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- - '>='
|
43
|
+
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '0'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
47
|
+
name: rspec
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- - '>='
|
51
|
+
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
|
-
type: :
|
54
|
+
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- - '>='
|
59
|
+
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
63
|
+
name: debugger
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- - '>='
|
67
|
+
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: '0'
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- - '>='
|
75
|
+
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '0'
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: autotest
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- - '>='
|
83
|
+
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: '0'
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- - '>='
|
91
|
+
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0'
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: rake
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- - '>='
|
99
|
+
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
89
101
|
version: '0'
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- - '>='
|
107
|
+
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: '0'
|
97
110
|
description: 淘宝开放平台ruby版,支持Rails3~
|
@@ -112,6 +125,7 @@ files:
|
|
112
125
|
- lib/generators/open_taobao/install_generator.rb
|
113
126
|
- lib/generators/templates/taobao.yml
|
114
127
|
- lib/open_taobao.rb
|
128
|
+
- lib/open_taobao/hash_ext.rb
|
115
129
|
- lib/open_taobao/open_taobao.rb
|
116
130
|
- lib/open_taobao/railtie.rb
|
117
131
|
- lib/open_taobao/version.rb
|
@@ -120,27 +134,29 @@ files:
|
|
120
134
|
- spec/spec_helper.rb
|
121
135
|
homepage: http://github.com/wongyouth/open_taobao
|
122
136
|
licenses: []
|
123
|
-
metadata: {}
|
124
137
|
post_install_message:
|
125
138
|
rdoc_options: []
|
126
139
|
require_paths:
|
127
140
|
- lib
|
128
141
|
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
129
143
|
requirements:
|
130
|
-
- - '>='
|
144
|
+
- - ! '>='
|
131
145
|
- !ruby/object:Gem::Version
|
132
146
|
version: '0'
|
133
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
134
149
|
requirements:
|
135
|
-
- - '>='
|
150
|
+
- - ! '>='
|
136
151
|
- !ruby/object:Gem::Version
|
137
152
|
version: '0'
|
138
153
|
requirements: []
|
139
154
|
rubyforge_project:
|
140
|
-
rubygems_version:
|
155
|
+
rubygems_version: 1.8.25
|
141
156
|
signing_key:
|
142
|
-
specification_version:
|
157
|
+
specification_version: 3
|
143
158
|
summary: Open Taobao API for ruby
|
144
159
|
test_files:
|
145
160
|
- spec/open_taobao_spec.rb
|
146
161
|
- spec/spec_helper.rb
|
162
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: a0d2cd1f2224327805d2a53d744fa6a2e48bde17
|
4
|
-
data.tar.gz: 902d65b7f744defc6380de2ac0f66037a20d17c4
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 281732d45349bbaf20424eb940c272d7494571d19f74605328e95dc37342040b4107c10e7d8868d30cb1136002f53aef10706d7c09f645502f2fedea8cc7873f
|
7
|
-
data.tar.gz: aefdde07064cc319103cf3203e371c233c8e142a3db835f800c6846a28aa3d0aaf0b137566531b1a67174000c61bbc4a96fc9d7a41f7416f8bf072226cd9303d
|