topsdk 0.0.4 → 0.0.5
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/.DS_Store +0 -0
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/init.rb +2 -0
- data/lib/config/taobao.yml +21 -0
- data/lib/topsdk/client.rb +70 -0
- data/lib/topsdk/version.rb +3 -0
- data/lib/topsdk.rb +45 -0
- data/topsdk.gemspec +26 -0
- metadata +13 -3
data/.DS_Store
ADDED
Binary file
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/init.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
prod: &prod
|
2
|
+
api_key: 12012322
|
3
|
+
secret_key: 42ab2d12a5bea25d1bc06ccd23123121daf
|
4
|
+
auth_url: http://container.api.taobao.com/container
|
5
|
+
rest_url: http://gw.api.taobao.com/router/rest
|
6
|
+
black_list: taobao.wangwang.eservice.receivenum.get, taobao.wangwang.eservice.noreplynum.get, taobao.wangwang.eservice.onlinetime.get, taobao.wangwang.eservice.loginlogs.get, taobao.wangwang.eservice.avgwaittime.get, taobao.wangwang.eservice.chatpeers.get,
|
7
|
+
|
8
|
+
sandbox: &sandbox
|
9
|
+
<<: *prod
|
10
|
+
secret_key: sandbox9ffd79873a7ae0e01fefed97c
|
11
|
+
auth_url: http://container.api.tbsandbox.com/container
|
12
|
+
rest_url: http://gw.api.tbsandbox.com/router/rest
|
13
|
+
|
14
|
+
development:
|
15
|
+
<<: *sandbox
|
16
|
+
|
17
|
+
test:
|
18
|
+
<<: *sandbox
|
19
|
+
|
20
|
+
production:
|
21
|
+
<<: *prod
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'nestful'
|
3
|
+
require 'digest/md5'
|
4
|
+
require 'pp'
|
5
|
+
|
6
|
+
module Topsdk
|
7
|
+
class Client
|
8
|
+
DEBUG = false
|
9
|
+
|
10
|
+
def initialize(params={})
|
11
|
+
@params = { # 淘宝参数
|
12
|
+
:app_key => ENV['TAOBAO_APP_KEY'],
|
13
|
+
:format => :json,
|
14
|
+
:v => '2.0',
|
15
|
+
:timestamp => timestamp
|
16
|
+
}
|
17
|
+
@params.merge!(params.clone) unless params.empty? # 參數合併
|
18
|
+
@params[:sign] = generate_sign(@params)
|
19
|
+
pp @params if DEBUG
|
20
|
+
end
|
21
|
+
|
22
|
+
def get(url=ENV['TAOBAO_REST_URL'])
|
23
|
+
format = if @params.has_key?(:method) && ENV['TAOBAO_XML_ONLY'].include?(@params[:method]) # 淘寶接口格式限制
|
24
|
+
:xml
|
25
|
+
else
|
26
|
+
:json
|
27
|
+
end
|
28
|
+
request = Nestful::Request.new(url, ({:method => :get, :format => format, :params => @params}))
|
29
|
+
@result = request.execute
|
30
|
+
parse
|
31
|
+
end
|
32
|
+
|
33
|
+
def post(url=ENV['TAOBAO_REST_URL'])
|
34
|
+
request = Nestful::Request.new(url, ({:method => :post, :format => :form, :params => @params}))
|
35
|
+
@result = request.execute
|
36
|
+
@result = JSON.parse(@result)
|
37
|
+
parse
|
38
|
+
end
|
39
|
+
|
40
|
+
def parse # 簡單解析一下
|
41
|
+
return false unless @result.is_a?(Hash)
|
42
|
+
case
|
43
|
+
when @result.has_key?(response_key)
|
44
|
+
pp response_key if DEBUG
|
45
|
+
result = @result[response_key]
|
46
|
+
when @result.has_key?('error_response')
|
47
|
+
@result['error_response']['msg']
|
48
|
+
else
|
49
|
+
@result
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def generate_sign(params={})
|
54
|
+
rand = ENV['TAOBAO_APP_SECRET'] + params.sort.flatten.join
|
55
|
+
Digest::MD5.hexdigest(rand).upcase! # 數字簽名
|
56
|
+
end
|
57
|
+
|
58
|
+
def response_key # 操作結果鍵
|
59
|
+
@params[:method][7..-1].gsub(/\./, '_') + "_response" unless @params[:method].nil?
|
60
|
+
end
|
61
|
+
|
62
|
+
def root_key # 獲取對象的鍵
|
63
|
+
response_key.split('_')[0] unless @params[:method].nil?
|
64
|
+
end
|
65
|
+
|
66
|
+
def timestamp # 时间戳
|
67
|
+
Time.now.strftime("%Y-%m-%d %H:%M:%S")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/topsdk.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'topsdk/version'
|
2
|
+
require 'topsdk/client'
|
3
|
+
|
4
|
+
RAILS_ENV = PADRINO_ENV if defined?(PADRINO_ENV)
|
5
|
+
|
6
|
+
# 賦值
|
7
|
+
def apply_settings
|
8
|
+
@settings = YAML.load_file(config_file)
|
9
|
+
@settings = defined?(RAILS_ENV) ? @settings[RAILS_ENV] : @settings['development']
|
10
|
+
ENV['TAOBAO_APP_KEY'] = @settings['api_key'].to_s
|
11
|
+
ENV['TAOBAO_APP_SECRET'] = @settings['secret_key']
|
12
|
+
ENV['TAOBAO_AUTH_URL'] = @settings['auth_url']
|
13
|
+
ENV['TAOBAO_REST_URL'] = @settings['rest_url']
|
14
|
+
ENV['TAOBAO_XML_ONLY'] = @settings['black_list']
|
15
|
+
end
|
16
|
+
|
17
|
+
def config_file
|
18
|
+
# 解析配置文件
|
19
|
+
yml_file = File.expand_path(File.join('.', 'config', 'taobao.yml'))
|
20
|
+
unless File.exist?(yml_file)
|
21
|
+
File.expand_path(File.join('config', 'taobao.yml'), File.dirname(__FILE__))
|
22
|
+
else
|
23
|
+
yml_file
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
apply_settings
|
28
|
+
|
29
|
+
module Topsdk
|
30
|
+
class << self
|
31
|
+
|
32
|
+
def get_with(joined_params = {})
|
33
|
+
Client.new(joined_params).get)
|
34
|
+
end
|
35
|
+
|
36
|
+
def post_with(joined_params = {})
|
37
|
+
Client.new(joined_params).post
|
38
|
+
end
|
39
|
+
|
40
|
+
def authorize_url
|
41
|
+
"#{ENV['TAOBAO_AUTH_URL']}?appkey=#{ENV['TAOBAO_APP_KEY']}&encode=utf-8"
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
data/topsdk.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "topsdk/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "topsdk"
|
7
|
+
s.version = Topsdk::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Howl王"]
|
10
|
+
s.email = ["howl.wong@gmail.com"]
|
11
|
+
s.homepage = ""
|
12
|
+
s.summary = "Taobao API client"
|
13
|
+
s.description = %q{Simple Taobao API client for Ruby}
|
14
|
+
s.extra_rdoc_files = [
|
15
|
+
"README.rdoc"
|
16
|
+
]
|
17
|
+
|
18
|
+
s.rubyforge_project = "topsdk"
|
19
|
+
|
20
|
+
s.files = `git ls-files`.split("\n")
|
21
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
22
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
23
|
+
s.require_paths = ["lib"]
|
24
|
+
|
25
|
+
s.add_runtime_dependency "nestful"
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: topsdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-10-27 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nestful
|
16
|
-
requirement: &
|
16
|
+
requirement: &70105361799620 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70105361799620
|
25
25
|
description: Simple Taobao API client for Ruby
|
26
26
|
email:
|
27
27
|
- howl.wong@gmail.com
|
@@ -30,7 +30,17 @@ extensions: []
|
|
30
30
|
extra_rdoc_files:
|
31
31
|
- README.rdoc
|
32
32
|
files:
|
33
|
+
- .DS_Store
|
34
|
+
- .gitignore
|
35
|
+
- Gemfile
|
33
36
|
- README.rdoc
|
37
|
+
- Rakefile
|
38
|
+
- init.rb
|
39
|
+
- lib/config/taobao.yml
|
40
|
+
- lib/topsdk.rb
|
41
|
+
- lib/topsdk/client.rb
|
42
|
+
- lib/topsdk/version.rb
|
43
|
+
- topsdk.gemspec
|
34
44
|
homepage: ''
|
35
45
|
licenses: []
|
36
46
|
post_install_message:
|