jingdong_fu 1.0 → 1.1
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/README.markdown +1 -1
- data/lib/generators/jingdong_fu/templates/config/jingdong.yml +1 -4
- data/lib/jingdong_fu.rb +16 -41
- metadata +4 -4
data/README.markdown
CHANGED
@@ -6,14 +6,11 @@ defaults: &defaults
|
|
6
6
|
development:
|
7
7
|
<<: *defaults
|
8
8
|
is_sandbox: false # If true, it will work under the sandbox environment(tbsandbox.com, not taobao.com).
|
9
|
-
use_curl: false # If true, it will use gem "patron" as the REST client.
|
10
9
|
|
11
10
|
test:
|
12
11
|
<<: *defaults
|
13
12
|
is_sandbox: ture
|
14
|
-
use_curl: false
|
15
13
|
|
16
14
|
production:
|
17
15
|
<<: *defaults
|
18
|
-
is_sandbox: false
|
19
|
-
use_curl: true
|
16
|
+
is_sandbox: false
|
data/lib/jingdong_fu.rb
CHANGED
@@ -15,7 +15,7 @@ module JingdongFu
|
|
15
15
|
|
16
16
|
SANDBOX = 'http://gw.api.sandbox.360buy.com/routerjson?'
|
17
17
|
PRODBOX = 'http://gw.api.360buy.com/routerjson?'
|
18
|
-
USER_AGENT = 'jingdong_fu/1.
|
18
|
+
USER_AGENT = 'jingdong_fu/1.1'
|
19
19
|
REQUEST_TIMEOUT = 10
|
20
20
|
API_VERSION = 2.0
|
21
21
|
SIGN_ALGORITHM = 'md5'
|
@@ -29,36 +29,18 @@ module JingdongFu
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def apply_settings
|
32
|
-
|
33
|
-
ENV['TAOBAO_SECRET_KEY'] = @settings['secret_key']
|
34
|
-
ENV['TAOBAOKE_PID'] = @settings['taobaoke_pid']
|
35
|
-
@base_url = @settings['is_sandbox'] ? SANDBOX : PRODBOX
|
36
|
-
|
37
|
-
initialize_session if @settings['use_curl']
|
38
|
-
end
|
39
|
-
|
40
|
-
def initialize_session
|
41
|
-
@sess = Patron::Session.new
|
42
|
-
@sess.base_url = @base_url
|
43
|
-
@sess.headers['User-Agent'] = USER_AGENT
|
44
|
-
@sess.timeout = REQUEST_TIMEOUT
|
32
|
+
@base_url = @settings['is_sandbox'] ? SANDBOX : PRODBOX
|
45
33
|
end
|
46
34
|
|
47
35
|
def switch_to(sandbox_or_prodbox)
|
48
36
|
@base_url = sandbox_or_prodbox
|
49
|
-
@sess.base_url = @base_url if @sess
|
50
37
|
end
|
51
38
|
|
52
39
|
def get(options = {})
|
53
|
-
|
54
|
-
@response = @sess.get(generate_query_string(sorted_params(options))).body
|
55
|
-
else
|
56
|
-
@response = TaobaoFu::Rest.get(@base_url, generate_query_vars(sorted_params(options)))
|
57
|
-
end
|
40
|
+
@response = TaobaoFu::Rest.get(@base_url, generate_query_vars(sorted_params(options)))
|
58
41
|
parse_result @response
|
59
42
|
end
|
60
43
|
|
61
|
-
# http://toland.github.com/patron/
|
62
44
|
def post(options = {})
|
63
45
|
end
|
64
46
|
|
@@ -68,17 +50,19 @@ module JingdongFu
|
|
68
50
|
def delete(options = {})
|
69
51
|
end
|
70
52
|
|
71
|
-
def sorted_params(
|
72
|
-
|
73
|
-
|
53
|
+
def sorted_params(params)
|
54
|
+
method = params.delete(:method)
|
55
|
+
param_json = Hash[params.sort_by { |k,v| k.to_s }.map { |k, v| [k.to_s, v.to_s] }].to_json
|
74
56
|
{
|
75
|
-
:app_key
|
76
|
-
:access_token
|
77
|
-
:format
|
78
|
-
:v
|
79
|
-
:sign_method
|
80
|
-
:timestamp
|
81
|
-
|
57
|
+
:app_key => @settings['app_key'],
|
58
|
+
:access_token => @settings['access_token'],
|
59
|
+
:format => OUTPUT_FORMAT,
|
60
|
+
:v => API_VERSION,
|
61
|
+
:sign_method => SIGN_ALGORITHM,
|
62
|
+
:timestamp => Time.now.strftime("%Y-%m-%d %H:%M:%S"),
|
63
|
+
:method => method,
|
64
|
+
:'360buy_param_json' => param_json
|
65
|
+
}
|
82
66
|
end
|
83
67
|
|
84
68
|
def generate_query_vars(params)
|
@@ -86,21 +70,12 @@ module JingdongFu
|
|
86
70
|
params
|
87
71
|
end
|
88
72
|
|
89
|
-
def generate_query_string(params)
|
90
|
-
sign_token = generate_sign(params_array.flatten.join)
|
91
|
-
total_param = params_array.map { |key, value| key.to_s+"="+value.to_s } + ["sign=#{sign_token}"]
|
92
|
-
URI.escape(total_param.join("&"))
|
93
|
-
end
|
94
|
-
|
95
73
|
def generate_sign(param_string)
|
96
|
-
puts param_string
|
97
74
|
Digest::MD5.hexdigest(@settings['secret_key'] + param_string + @settings['secret_key']).upcase
|
98
75
|
end
|
99
76
|
|
100
77
|
def parse_result(data)
|
101
78
|
Crack::JSON.parse(data)
|
102
79
|
end
|
103
|
-
|
104
80
|
end
|
105
|
-
|
106
|
-
end
|
81
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jingdong_fu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.1'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: crack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70302411868120 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 0.1.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70302411868120
|
25
25
|
description: Ruby client for JOS platform.
|
26
26
|
email: info@networking.io
|
27
27
|
executables: []
|