open_taobao 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a0d2cd1f2224327805d2a53d744fa6a2e48bde17
4
+ data.tar.gz: 902d65b7f744defc6380de2ac0f66037a20d17c4
5
+ SHA512:
6
+ metadata.gz: 281732d45349bbaf20424eb940c272d7494571d19f74605328e95dc37342040b4107c10e7d8868d30cb1136002f53aef10706d7c09f645502f2fedea8cc7873f
7
+ data.tar.gz: aefdde07064cc319103cf3203e371c233c8e142a3db835f800c6846a28aa3d0aaf0b137566531b1a67174000c61bbc4a96fc9d7a41f7416f8bf072226cd9303d
@@ -0,0 +1,3 @@
1
+ ## 2013-05-12
2
+
3
+ pid is not required in config file, but will be loaded to config for back compatibility.
data/README.md CHANGED
@@ -3,12 +3,19 @@ OpenTaobao [![Build Status](https://secure.travis-ci.org/wongyouth/open_taobao.p
3
3
 
4
4
  Taobao Open Platform client for ruby. Rails3 is supported.
5
5
 
6
+ ## NOTICE
7
+
8
+ `pid` is removed from config file, it's not required any more.
9
+
6
10
  ## Installation
7
11
 
8
12
  Add this line to your application's Gemfile:
9
13
 
10
14
  gem 'open_taobao'
11
- gem 'patron' # add this line if you want to use [patron][] instead of Net::HTTP
15
+
16
+ If you want to use [patron][] as http client instead of Net::HTTP, add line below to your Gemfile
17
+
18
+ gem 'patron'
12
19
 
13
20
  And then execute:
14
21
 
@@ -18,18 +25,20 @@ Or install it yourself as:
18
25
 
19
26
  $ gem install open_taobao
20
27
 
21
- Run generate to complete install:
28
+ ## Usage
22
29
 
23
- $ rails g open_taobao:install
30
+ ### Rails with yaml file configured
24
31
 
25
- 在你的`Rails`项目的`config`目录下会生成一个`taobao.yml`文件,
26
- 打开taobao.yml文件,设置你自己的`app_key`, `secret_key`, 淘宝客的`pid`
32
+ Run generator to generate config file:
27
33
 
28
- ## Usage
34
+ $ rails g open_taobao:install
29
35
 
30
- ### Rails with yaml file configured
36
+ It will generate a `taobao.yml` file under your Rails' config dir.
37
+ Open the file and configure it with your taobao info.
38
+
39
+ Notice: `app_key`, `secret_key`, `endpoint` must be included in your YAML file, otherwise OpenTaobao.load will fail.
31
40
 
32
- 调用`OpenTaobao.get`方法,传入相应参数:
41
+ call `OpenTaobao.get`,with taobao parameters:
33
42
 
34
43
  hash = OpenTaobao.get(
35
44
  :method => "taobao.itemcats.get",
@@ -37,14 +46,13 @@ Run generate to complete install:
37
46
  :parent_cid => 0
38
47
  )
39
48
 
40
- 返回内容将自动转化为hash格式。
49
+ The return data will be converted to a Hash automatically.
41
50
 
42
51
  ### plain ruby
43
52
 
44
53
  OpenTaobao.config = {
45
54
  'app_key' => 'test',
46
55
  'secret_key' => 'test',
47
- 'pid' => 'test',
48
56
  'endpoint' => "http://gw.api.tbsandbox.com/router/rest"
49
57
  }
50
58
 
@@ -56,6 +64,17 @@ Run generate to complete install:
56
64
  :parent_cid => 0
57
65
  )
58
66
 
67
+ ### get query string
68
+
69
+ If you want the query string with some params just pass the params to OpenTaobao.url() the same as OpenTaobao.get().
70
+ The query string will change every time your executed because timestamps changed.
71
+
72
+ OpenTaobao.url(
73
+ :method => "taobao.itemcats.get",
74
+ :fields => "cid,parent_id,name,is_parent",
75
+ :parent_cid => 0
76
+ )
77
+
59
78
  ## Contributing
60
79
 
61
80
  1. Fork it
@@ -1,18 +1,15 @@
1
1
  development:
2
2
  app_key: 'test'
3
3
  secret_key: 'test'
4
- pid: 'test'
5
4
  endpoint: "http://gw.api.tbsandbox.com/router/rest"
6
5
 
7
6
  test:
8
7
  app_key: 'test'
9
8
  secret_key: 'test'
10
- pid: 'test'
11
9
  endpoint: "http://gw.api.tbsandbox.com/router/rest"
12
10
 
13
11
  production:
14
12
  app_key: 'YOUR-KEY'
15
13
  secret_key: 'YOUR-KEY'
16
- pid: 'YOUR-PID'
17
14
  endpoint: "http://gw.api.taobao.com/router/rest"
18
15
 
@@ -34,7 +34,6 @@ module OpenTaobao
34
34
  #
35
35
  # app_key: "YOUR APP KEY"
36
36
  # secret_key: "YOUR SECRET KEY"
37
- # pid: "YOUR TAOBAOKE pid"
38
37
  # endpoint: "TAOBAO GATEWAY API URL"
39
38
  #
40
39
  def load(config_file)
@@ -55,7 +54,7 @@ module OpenTaobao
55
54
  # raise exception if config key missed in YAML file
56
55
  def check_config
57
56
  list = []
58
- %w(app_key secret_key pid endpoint).map do |k|
57
+ %w(app_key secret_key endpoint).map do |k|
59
58
  list << k unless config.has_key? k
60
59
  end
61
60
 
@@ -74,7 +73,7 @@ module OpenTaobao
74
73
  ENV['TAOBAO_API_KEY'] = config['app_key']
75
74
  ENV['TAOBAO_SECRET_KEY'] = config['secret_key']
76
75
  ENV['TAOBAO_ENDPOINT'] = config['endpoint']
77
- ENV['TAOBAOKE_PID'] = config['pid']
76
+ ENV['TAOBAOKE_PID'] = config['pid'] # for compatible with v0.0.3
78
77
  end
79
78
 
80
79
  # Initialize http sesison
@@ -91,7 +90,11 @@ module OpenTaobao
91
90
 
92
91
  # Return request signature with MD5 signature method
93
92
  def sign(params)
94
- Digest::MD5::hexdigest("#{config['secret_key']}#{sorted_option_string params}#{config['secret_key']}").upcase
93
+ Digest::MD5::hexdigest(wrap_with_secret sorted_option_string(params)).upcase
94
+ end
95
+
96
+ def wrap_with_secret(s)
97
+ config['secret_key'] + s + config['secret_key']
95
98
  end
96
99
 
97
100
  # Return sorted request parameter by request key
@@ -1,3 +1,3 @@
1
1
  module OpenTaobao
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -4,7 +4,7 @@ require File.expand_path('../lib/open_taobao/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["wongyouth"]
6
6
  gem.email = ["wongyouth@gmail.com"]
7
- gem.description = %q{淘宝开放平台ruby版,支持Rails3}
7
+ gem.description = %q{淘宝开放平台ruby版,支持Rails3~}
8
8
  gem.summary = %q{Open Taobao API for ruby}
9
9
  gem.homepage = "http://github.com/wongyouth/open_taobao"
10
10
 
@@ -5,45 +5,42 @@ require 'tempfile'
5
5
  describe OpenTaobao do
6
6
  ENDPOINT = "http://gw.api.tbsandbox.com/router/rest"
7
7
 
8
- before(:each) do
9
- @now = Time.parse('2012-10-29 23:30')
10
- Time.stub(:now) { @now }
11
- end
12
-
13
8
  let(:config_file) do
14
9
  file = Tempfile.new 'taobao.yml'
15
10
  File.open file.path, 'w+' do |f|
16
11
  f.write <<-EOS.gsub(/^ +/, '')
17
12
  app_key: 'test'
18
13
  secret_key: 'test'
19
- pid: 'test'
20
14
  endpoint: '#{ENDPOINT}'
21
15
  EOS
22
16
  end
23
17
  file
24
18
  end
25
19
 
20
+ before(:each) do
21
+ @now = Time.parse('2012-10-29 23:30')
22
+ Time.stub(:now) { @now }
23
+ OpenTaobao.load(config_file.path)
24
+ end
25
+
26
26
  # we only need to load config file here once for all test
27
27
  it "should load config file" do
28
- OpenTaobao.load(config_file.path)
29
28
  OpenTaobao.config.should == {
30
29
  'app_key' => 'test',
31
30
  'secret_key' => 'test',
32
- 'pid' => 'test',
33
31
  'endpoint' => "http://gw.api.tbsandbox.com/router/rest"
34
32
  }
35
33
  end
36
34
 
37
35
  it "should raise exception if config yaml does not include correct keys" do
38
36
  OpenTaobao.config = {
39
- 'app_key' => 'test',
40
37
  'secret_key' => 'test',
41
38
  'endpoint' => "http://gw.api.tbsandbox.com/router/rest"
42
39
  }
43
40
 
44
41
  expect {
45
42
  OpenTaobao.check_config
46
- }.to raise_error('[pid] not included in your yaml file.')
43
+ }.to raise_error('[app_key] not included in your yaml file.')
47
44
  end
48
45
 
49
46
  it "should merge with default options" do
metadata CHANGED
@@ -1,113 +1,100 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open_taobao
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - wongyouth
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-10 00:00:00.000000000 Z
11
+ date: 2013-05-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
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'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: json
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: faraday
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rspec
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: autotest
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rake
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
- description: 淘宝开放平台ruby版,支持Rails3
97
+ description: 淘宝开放平台ruby版,支持Rails3~
111
98
  email:
112
99
  - wongyouth@gmail.com
113
100
  executables: []
@@ -117,6 +104,7 @@ files:
117
104
  - .gitignore
118
105
  - .rspec
119
106
  - .travis.yml
107
+ - CHNAGELOG.md
120
108
  - Gemfile
121
109
  - LICENSE
122
110
  - README.md
@@ -132,33 +120,26 @@ files:
132
120
  - spec/spec_helper.rb
133
121
  homepage: http://github.com/wongyouth/open_taobao
134
122
  licenses: []
123
+ metadata: {}
135
124
  post_install_message:
136
125
  rdoc_options: []
137
126
  require_paths:
138
127
  - lib
139
128
  required_ruby_version: !ruby/object:Gem::Requirement
140
- none: false
141
129
  requirements:
142
- - - ! '>='
130
+ - - '>='
143
131
  - !ruby/object:Gem::Version
144
132
  version: '0'
145
- segments:
146
- - 0
147
- hash: -1746376069650641682
148
133
  required_rubygems_version: !ruby/object:Gem::Requirement
149
- none: false
150
134
  requirements:
151
- - - ! '>='
135
+ - - '>='
152
136
  - !ruby/object:Gem::Version
153
137
  version: '0'
154
- segments:
155
- - 0
156
- hash: -1746376069650641682
157
138
  requirements: []
158
139
  rubyforge_project:
159
- rubygems_version: 1.8.23
140
+ rubygems_version: 2.0.0
160
141
  signing_key:
161
- specification_version: 3
142
+ specification_version: 4
162
143
  summary: Open Taobao API for ruby
163
144
  test_files:
164
145
  - spec/open_taobao_spec.rb