ost-sdk-ruby 0.0.15 → 0.0.16

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 395fba26189096724fa6a65a25cff0d37240d056
4
- data.tar.gz: 256fcdab9c859742e01fbdcaf21c72b458a806c3
3
+ metadata.gz: 9a0876d69388091971caf71a7a4b818a18405c15
4
+ data.tar.gz: ef03b8dbf654efe605f462c5f13cd3c60fee7757
5
5
  SHA512:
6
- metadata.gz: 21462b25d844f6e5933e2c77324950625ca1cf454ed4a92af82f6d2f4fba1c7b213b23c262aedd74468ae080de7d8a268bede69298b0af95b1f48694198233ec
7
- data.tar.gz: aa1fb56ac03cc69420a8dfc0c9b0edc3018c54c21bd3cbf9d75177ec630e172a0ce35b2b9d121ba74ffb5f7312eb86baebab3f1ba12c7efe81d8aff415fb7f44
6
+ metadata.gz: d8ab844fb8b9566d5062b0dd99f561ad91872138d144666d875633af5939ffa4a18973134a60de09c39a2fb572f2b88b42d7b74bec1afaae3e01a367104d94a1
7
+ data.tar.gz: 764c18b5e755e63384cdf818de97fec611b5b8d184508fe23dbdde2423f936310c1f0e30a6c75c470f6f52d3d9d3e9a1fe176ecfd2b60954d6e48484c84f6f61
@@ -9,6 +9,7 @@ module OSTSdk
9
9
  require "openssl"
10
10
  require "net/http"
11
11
  require "json"
12
+ require 'rack'
12
13
 
13
14
  # Initialize
14
15
  #
@@ -39,10 +40,12 @@ module OSTSdk
39
40
  uri = post_api_uri(endpoint)
40
41
  http = setup_request(uri)
41
42
  r_params = base_params.merge(request_params)
43
+ query_string = Rack::Utils.build_nested_query(r_params)
44
+ escaped_query_string = URI.escape(query_string, '*')
42
45
  if @api_spec
43
- return OSTSdk::Util::Result.success({data: {request_uri: uri.to_s, request_type: 'POST', request_params: hash_to_query_string(r_params)}})
46
+ return OSTSdk::Util::Result.success({data: {request_uri: uri.to_s, request_type: 'POST', request_params: escaped_query_string}})
44
47
  else
45
- result = http.post(uri.path, hash_to_query_string(r_params))
48
+ result = http.post(uri.path, escaped_query_string)
46
49
  return format_response(result)
47
50
  end
48
51
  end
@@ -61,12 +64,17 @@ module OSTSdk
61
64
  perform_and_handle_exceptions('u_hh_2', 'GET request Failed') do
62
65
  base_params = get_base_params(endpoint, request_params)
63
66
  r_params = base_params.merge(request_params)
64
- uri = URI(get_api_url(endpoint))
65
- uri.query = URI.encode_www_form(r_params)
67
+ query_string = Rack::Utils.build_nested_query(r_params)
68
+ escaped_query_string = URI.escape(query_string, '*')
69
+ raw_url = get_api_url(endpoint) + "?" + escaped_query_string
70
+ uri = URI(raw_url)
66
71
  if @api_spec
67
- return OSTSdk::Util::Result.success({data: {request_uri: uri.to_s.split("?")[0], request_type: 'GET', request_params: hash_to_query_string(r_params)}})
72
+ return OSTSdk::Util::Result.success({data: {request_uri: uri.to_s.split("?")[0], request_type: 'GET', request_params: escaped_query_string}})
68
73
  else
69
- result = Net::HTTP.get_response(uri)
74
+ result = {}
75
+ Timeout.timeout(5) do
76
+ result = Net::HTTP.get_response(uri)
77
+ end
70
78
  return format_response(result)
71
79
  end
72
80
  end
@@ -77,7 +85,7 @@ module OSTSdk
77
85
  def set_api_base_url(env)
78
86
  ost_sdk_saas_api_endpoint = ENV['CA_SAAS_API_ENDPOINT']
79
87
  if !ost_sdk_saas_api_endpoint.nil?
80
- @api_base_url = ost_sdk_saas_api_endpoint
88
+ @api_base_url = ost_sdk_saas_api_endpoint
81
89
  else
82
90
  case env
83
91
  when 'sandbox'
@@ -103,14 +111,21 @@ module OSTSdk
103
111
 
104
112
  def get_base_params(endpoint, request_params)
105
113
  request_timestamp = Time.now.to_i.to_s
106
- str = endpoint + '::' + request_timestamp + '::' + format_request_params(request_params).to_json
114
+ request_params = request_params.merge("request_timestamp" => request_timestamp, "api_key" => @api_key)
115
+
116
+ sorted_request_params = sort_param(request_params)
117
+ request_params_str = Rack::Utils.build_nested_query(sorted_request_params)
118
+ request_params_escaped_str = URI.escape(request_params_str, "*")
119
+
120
+ str = endpoint + '?' + request_params_escaped_str
107
121
  signature = generate_signature(str)
108
- {"request-timestamp" => request_timestamp, "signature" => signature, "api-key" => @api_key}
122
+ {"request_timestamp" => request_timestamp, "signature" => signature, "api_key" => @api_key}
109
123
  end
110
124
 
111
125
  def generate_signature(string_to_sign)
112
126
  digest = OpenSSL::Digest.new('sha256')
113
- OpenSSL::HMAC.hexdigest(digest, @api_secret, string_to_sign)
127
+ signature = OpenSSL::HMAC.hexdigest(digest, @api_secret, string_to_sign)
128
+ signature
114
129
  end
115
130
 
116
131
  def post_api_uri(endpoint)
@@ -131,23 +146,40 @@ module OSTSdk
131
146
  end
132
147
  end
133
148
 
134
- def format_request_params(request_params)
135
- sorted_array = request_params.sort {|a, b| a[0].downcase <=> b[0].downcase}
136
- sorted_hash = {}
137
- sorted_array.each do |element|
138
- value = element[1]
139
- value = value.to_s
140
- sorted_hash[element[0].to_s] = value
149
+ def sort_param(params)
150
+ if [Hash, Array].include?(params.class)
151
+ params = JSON.parse(params.to_json)
152
+ else
153
+ params = params.to_s
141
154
  end
142
- sorted_hash
143
- end
144
155
 
145
- def hash_to_query_string(hash)
146
- str_array = []
147
- hash.each do |k, v|
148
- str_array << "#{k}=#{v.to_s}"
156
+ res = {}
157
+ if params.class == Array
158
+ data = []
159
+ params.each do |ele|
160
+ if [Hash, Array].include?(ele.class)
161
+ data << sort_param(ele)
162
+ else
163
+ data << ele.to_s
164
+ end
165
+ end
166
+ return data
167
+ end
168
+
169
+ params.sort.each do |ele|
170
+ key = ele[0]
171
+ val = ele[1]
172
+ sorted_val = val
173
+
174
+ if [Hash, Array].include?(val.class)
175
+ sorted_val = sort_param(val)
176
+ else
177
+ sorted_val = sorted_val.to_s
178
+ end
179
+
180
+ res[key] = sorted_val
149
181
  end
150
- str_array.join('&')
182
+ return res
151
183
  end
152
184
 
153
185
  def format_response(response)
@@ -1,5 +1,5 @@
1
1
  module OSTSdk
2
2
 
3
- VERSION = "0.0.15"
3
+ VERSION = "0.0.16"
4
4
 
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ost-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - OST
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-05 00:00:00.000000000 Z
11
+ date: 2018-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 2.0.4
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 2.0.4
41
41
  description: OST Ruby SDK provides easy integration with https://api.ost.com built
42
42
  on top of OpenST Platform
43
43
  email: []