lazop-api-client 1.0.0.rc1

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
+ SHA256:
3
+ metadata.gz: 19fdfe598f3b25f4093c2724f0ed1ac17de4bc58ff95ca100a47577e178d59a9
4
+ data.tar.gz: 61f9ffcaf02827624254cb2c50c879b86d6042074d6db5a96e143333c774e97c
5
+ SHA512:
6
+ metadata.gz: 6a0062ceaa1ccbe5b455cbb881efd5406e4a941c04026d2cc9e906ddc6f954c0b148c7b164f0d6c2631c85724400f8db2fd12fff7932ddeaf05f24f5de8535a6
7
+ data.tar.gz: 46883ab87f822a74ec57a506ebb20d831f2738dd98dfe41084d40932c2c65bb0f5bb5e06d86cb38987aa04a7cef20c36981f7c503d5de52d5e82bd8dfde7dce1
@@ -0,0 +1,138 @@
1
+ #!/usr/bin/ruby
2
+ # -*- coding: UTF-8 -*-
3
+
4
+ require 'rest-client'
5
+ require 'json'
6
+ require 'OpenSSL'
7
+
8
+ module Lazop
9
+ class LazopClient
10
+
11
+ @serverUrl = nil
12
+ @appkey = nil
13
+ @appSecret = nil
14
+
15
+ def initialize(serverUrl,appkey,appSecret)
16
+ @serverUrl,@appkey,@appSecret = serverUrl,appkey,appSecret
17
+ end
18
+
19
+ def execute(request,accessToken = nil)
20
+
21
+ sys_params = Hash.new
22
+ sys_params[:app_key] = @appkey
23
+
24
+ timestamp = request.timestamp
25
+ if timestamp == nil
26
+ timestamp = (Time.now.to_f * 1000).to_i
27
+ end
28
+ sys_params[:timestamp] = timestamp
29
+
30
+ sys_params[:sign_method] = 'hmac'
31
+
32
+ if accessToken != nil
33
+ sys_params[:access_token] = accessToken
34
+ end
35
+
36
+ sys_params[:sign] = sign_api_request(sys_params,request.api_params)
37
+
38
+ rpcUrl = get_rest_url(@serverUrl,request.api_name)
39
+ fullUrl = get_full_url(rpcUrl,sys_params)
40
+
41
+ obj = nil
42
+ if request.file_params.size() > 0 || request.http_method == 'POST'
43
+ obj = perform_post(fullUrl,request.api_params,request.file_params,request.header_params)
44
+ else
45
+ obj = perform_get(fullUrl,request.api_params,request.header_params)
46
+ end
47
+
48
+ puts obj
49
+ return Lazop::LazopResponse.new(obj['type'],obj['code'],obj['message'],obj['request_id'],obj)
50
+ end
51
+
52
+ def perform_get url,api_params,header_params
53
+
54
+ param_str = ''
55
+
56
+ if api_params != nil
57
+ api_params.each do |k,v|
58
+ param_str += '&'
59
+ param_str += k.to_s()
60
+ param_str += '='
61
+ param_str += v.to_s()
62
+ end
63
+ end
64
+
65
+ puts url + param_str
66
+
67
+ res = JSON.parse(RestClient.get(url + param_str, header_params))
68
+
69
+ return res
70
+
71
+ end
72
+
73
+ def perform_post url, api_params,file_params,header_params
74
+
75
+ all_params = api_params
76
+
77
+ if file_params != nil
78
+ file_params.each do |k,v|
79
+ all_params[k] = File.open(v, "rb")
80
+ end
81
+ end
82
+
83
+ res = JSON.parse(RestClient.post(url,all_params))
84
+ return res
85
+ end
86
+
87
+ def sign_api_request(sys_params,api_params)
88
+ sort_arrays = nil
89
+
90
+ if api_params != nil
91
+ sort_arrays = sys_params.merge(api_params).sort_by do |k,v|
92
+ k.to_s()
93
+ end
94
+ else
95
+ sort_arrays = sys_params.sort_by do |k,v|
96
+ k
97
+ end
98
+ end
99
+
100
+ sign_str = ''
101
+ sort_arrays.each do |k,v|
102
+ sign_str += k.to_s()
103
+ sign_str += v.to_s()
104
+ end
105
+
106
+ return OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('md5'), @appSecret, sign_str).upcase
107
+ end
108
+
109
+ def get_rest_url(url,api_name)
110
+ length = url.length()
111
+ if url[length -1] == '/'
112
+ return url + api_name.index('/');
113
+ end
114
+
115
+ return url + api_name;
116
+ end
117
+
118
+ def get_full_url(url,params)
119
+
120
+ full_url = url
121
+ param_str = ''
122
+
123
+ params.each do |k,v|
124
+ if param_str.length() > 0
125
+ param_str += '&'
126
+ end
127
+ param_str += k.to_s()
128
+ param_str += '='
129
+ param_str += v.to_s()
130
+ end
131
+
132
+ full_url += '?'
133
+ full_url += param_str
134
+
135
+ return full_url
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/ruby
2
+ # -*- coding: UTF-8 -*-
3
+
4
+ module Lazop
5
+ class LazopRequest
6
+ # this hash will hold all api params
7
+ @api_params = nil
8
+ # this hash will hold http header params
9
+ @header_params = nil
10
+ # this hash will hold byte arrays params , such as file path
11
+ @file_params = nil
12
+
13
+ @api_name = nil
14
+ @http_method = 'POST'
15
+ @timestamp = nil
16
+
17
+ def initialize(api_name = nil,http_method = 'POST')
18
+ @api_name , @http_method = api_name,http_method
19
+ @api_params = Hash.new
20
+ @header_params = Hash.new
21
+ @file_params = Hash.new
22
+ end
23
+
24
+ def add_api_parameter(key,value)
25
+ if key.kind_of? String
26
+ @api_params[key] = value
27
+ else
28
+ raise 'api param key is not String'
29
+ end
30
+ end
31
+
32
+ def add_http_parameter(key,value)
33
+ if key.kind_of? String
34
+ @header_params[key] = value
35
+ else
36
+ raise 'http param key is not String'
37
+ end
38
+ end
39
+
40
+ # file_path must be String
41
+ def add_file_parameter(key,file_path)
42
+ if (key.kind_of? String) && (file_path.kind_of? String)
43
+ @file_params[key] = file_path
44
+ else
45
+ raise 'http param key is not String'
46
+ end
47
+ end
48
+
49
+ def timestamp
50
+ @timestamp
51
+ end
52
+
53
+ def set_timestamp=(value)
54
+ @timestamp = value
55
+ end
56
+
57
+ def api_params
58
+ @api_params
59
+ end
60
+
61
+ def api_name
62
+ @api_name
63
+ end
64
+
65
+ def http_method
66
+ @http_method
67
+ end
68
+
69
+ def file_params
70
+ @file_params
71
+ end
72
+
73
+ def header_params
74
+ @header_params
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/ruby
2
+ # -*- coding: UTF-8 -*-
3
+
4
+ module Lazop
5
+ class LazopResponse
6
+
7
+ def initialize(type,code,message,r_id,body)
8
+ @type = type
9
+ @code = code
10
+ @message = message
11
+ @body = body
12
+ @request_id = r_id
13
+ end
14
+
15
+ def type
16
+ # response type nil,ISP,ISV,SYSTEM
17
+ # nil :no error
18
+ # ISP : API Service Provider Error
19
+ # ISV : API Request Client Error
20
+ # SYSTEM : Lazop platform Error
21
+ @type
22
+ end
23
+
24
+ def code
25
+ # response code, 0 is no error
26
+ @code
27
+ end
28
+
29
+ def message
30
+ @message
31
+ end
32
+
33
+ def body
34
+ # http response body, contains all fileds
35
+ @body
36
+ end
37
+
38
+ def request_id
39
+ # api uniqe request id
40
+ @request_id
41
+ end
42
+
43
+ def success?
44
+ @code == '0'
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/ruby
2
+ # -*- coding: UTF-8 -*-
3
+
4
+ require 'lazop-api-client'
5
+ require 'pp'
6
+
7
+ client = Lazop::LazopClient.new('http://api.lazada.test/rest','576214','gI1PBMAxmsYOfc2NPJztyx9DFS4aMtK6')
8
+ request = Lazop::LazopRequest.new('/xiaoxuan/mockfileupload')
9
+ request.add_api_parameter("file_name","pom.xml")
10
+ request.add_file_parameter("file_bytes","/Users/xt/Documents/work/tasp/tasp/pom.xml")
11
+
12
+ response = client.execute(request)
13
+
14
+ puts response.success?
15
+
16
+ pp response
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lazop-api-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.rc1
5
+ platform: ruby
6
+ authors:
7
+ - xuteng.xt
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple rest API client For Lazop Open Platform for ruby
14
+ email: xuteng.xt@alibaba-inc.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/LazopClient.rb
20
+ - lib/LazopRequest.rb
21
+ - lib/LazopResponse.rb
22
+ - spec/FileUploadDemo.rb
23
+ homepage: http://rubygems.org/gems/lazop-api-client
24
+ licenses: []
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.3.1
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.7.6
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Rest API Client For Lazop Open Platform
46
+ test_files:
47
+ - spec/FileUploadDemo.rb