mastercard_api_core 1.4.6 → 1.4.7
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 +4 -4
- data/lib/mastercard/core/config.rb +43 -0
- data/lib/mastercard/core/constants.rb +11 -3
- data/lib/mastercard/core/controller.rb +28 -17
- data/lib/mastercard/core/model.rb +75 -10
- data/lib/mastercard/security/authentication.rb +1 -1
- data/lib/mastercard/security/oauth.rb +6 -13
- data/mastercard_api_core.gemspec +43 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 296da60bdee286979c6ca87713a51d0948f8f076
|
4
|
+
data.tar.gz: c2c7df86096d2ea0e8b7caf525f745864b1924c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3818063fe52ea1acd907190a5b5661984de49fa75d1e7839463ba6e5710ab71e825617dcc61a666abf9792296a00dafa8e02eb2d2e688ab2296b3c3973c79160
|
7
|
+
data.tar.gz: b0f2e048f0fcb5676f559f1784d866651762e57da000d3a900eeb61081e8c3f65a03ae0dce3b5606bf033b33a4832763d1dccc7184b107c320908aa66aac4641
|
@@ -36,6 +36,12 @@ module MasterCard
|
|
36
36
|
@@authentication = nil;
|
37
37
|
@@registeredInstances = {}
|
38
38
|
|
39
|
+
@@proxy = nil
|
40
|
+
@@connection_timeout = 5
|
41
|
+
@@read_timeout = 30
|
42
|
+
|
43
|
+
|
44
|
+
|
39
45
|
public
|
40
46
|
def self.setDebug(debug)
|
41
47
|
@@debug = debug
|
@@ -58,6 +64,43 @@ module MasterCard
|
|
58
64
|
return @@environment == Environment::SANDBOX
|
59
65
|
end
|
60
66
|
|
67
|
+
def self.setProxy(proxy)
|
68
|
+
if (proxy.nil? == false)
|
69
|
+
@@proxy = proxy
|
70
|
+
else
|
71
|
+
@@proxy = nil
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.getProxy()
|
76
|
+
return @@proxy
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
def self.setConnectionTimeout(timeout)
|
81
|
+
if (timeout.nil? == false && timeout.is_a?(Numeric))
|
82
|
+
@@connection_timeout = timeout
|
83
|
+
else
|
84
|
+
@@connection_timeout = 5
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
def self.setReadTimeout(timeout)
|
90
|
+
if (timeout.nil? == false && timeout.is_a?(Numeric))
|
91
|
+
@@read_timeout = timeout
|
92
|
+
else
|
93
|
+
@@read_timeout = 30
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.getConnectionTimeout()
|
98
|
+
return @@connection_timeout
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.getReadTimeout()
|
102
|
+
return @@read_timeout
|
103
|
+
end
|
61
104
|
|
62
105
|
def self.getEnvironment
|
63
106
|
return @@environment
|
@@ -24,11 +24,19 @@
|
|
24
24
|
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
25
25
|
# SUCH DAMAGE.
|
26
26
|
#
|
27
|
+
|
28
|
+
|
29
|
+
|
27
30
|
module MasterCard
|
28
31
|
module Core
|
29
|
-
module Constants
|
30
|
-
|
31
|
-
|
32
|
+
module Constants
|
33
|
+
spec = Gem::Specification::load(File.join( File.dirname(__FILE__), '../../../mastercard_api_core.gemspec' ))
|
34
|
+
SDK = "mastercard_api_core(ruby)"
|
35
|
+
VERSION = spec.version.to_s()
|
36
|
+
|
37
|
+
def self.getCoreVersion
|
38
|
+
return SDK+":"+VERSION
|
39
|
+
end
|
32
40
|
end
|
33
41
|
|
34
42
|
module Environment
|
@@ -36,6 +36,7 @@ module MasterCard
|
|
36
36
|
module Controller
|
37
37
|
class APIController
|
38
38
|
include MasterCard::Core
|
39
|
+
include MasterCard::Core::Constants
|
39
40
|
include MasterCard::Core::Exceptions
|
40
41
|
include MasterCard::Security
|
41
42
|
|
@@ -51,8 +52,7 @@ module MasterCard
|
|
51
52
|
KEY_ACCEPT = "Accept"
|
52
53
|
KEY_USER_AGENT = "User-Agent"
|
53
54
|
KEY_CONTENT_TYPE = "Content-Type"
|
54
|
-
APPLICATION_JSON = "application/json"
|
55
|
-
RUBY_SDK = "Ruby_SDK"
|
55
|
+
APPLICATION_JSON = "application/json; charset=UTF-8"
|
56
56
|
JSON_STR = "JSON"
|
57
57
|
|
58
58
|
|
@@ -155,26 +155,36 @@ module MasterCard
|
|
155
155
|
return body
|
156
156
|
end
|
157
157
|
|
158
|
-
def
|
158
|
+
def getQueryParams(action,queryParams,isJsonNative,input)
|
159
159
|
#Returns the path params based on action
|
160
|
-
|
160
|
+
params = {}
|
161
|
+
if isJsonNative == false
|
162
|
+
params = {KEY_FORMAT => JSON_STR}
|
163
|
+
end
|
164
|
+
|
161
165
|
case action.upcase
|
162
166
|
when ACTION_LIST, ACTION_READ, ACTION_QUERY, ACTION_DELETE
|
163
167
|
unless input.nil?
|
164
|
-
|
168
|
+
params = params.merge(input)
|
165
169
|
end
|
166
170
|
end
|
167
171
|
|
168
172
|
#merge the queryParams
|
169
|
-
|
173
|
+
params = params.merge(queryParams)
|
170
174
|
|
171
|
-
return
|
175
|
+
return params
|
172
176
|
end
|
173
177
|
|
174
178
|
def getHTTPObject(uri)
|
179
|
+
|
180
|
+
proxy = Config.getProxy()
|
181
|
+
proxyHost = proxy.nil? == false ? proxy.key?(:host) ? proxy[:host] : nil : nil
|
182
|
+
proxyPort = proxy.nil? == false ? proxy.key?(:port) ? proxy[:port] : nil : nil
|
175
183
|
|
176
184
|
#Returns the HTTP Object
|
177
|
-
http = Net::HTTP.new(uri.host,uri.port)
|
185
|
+
http = Net::HTTP.new(uri.host,uri.port, proxyHost, proxyPort)
|
186
|
+
http.read_timeout = Config.getReadTimeout()
|
187
|
+
http.open_timeout = Config.getConnectionTimeout()
|
178
188
|
|
179
189
|
if uri.scheme == "https"
|
180
190
|
http.use_ssl = true
|
@@ -184,7 +194,7 @@ module MasterCard
|
|
184
194
|
|
185
195
|
end
|
186
196
|
|
187
|
-
def
|
197
|
+
def encode_query_params(path, params)
|
188
198
|
#Encode and join the params
|
189
199
|
encoded = URI.encode_www_form(params)
|
190
200
|
[path, encoded].join("?")
|
@@ -217,16 +227,18 @@ module MasterCard
|
|
217
227
|
|
218
228
|
fullUrl = resolvedHost + resourcePath
|
219
229
|
|
220
|
-
#Get the resourcePath containing
|
230
|
+
#Get the resourcePath containing path parameters
|
221
231
|
fullUrl = getFullResourcePath(config.getAction(),fullUrl,input)
|
222
232
|
|
223
233
|
#Get the path parameters
|
224
|
-
|
234
|
+
params = getQueryParams(config.getAction(),queryParams,metadata.isJsonNative(),input)
|
225
235
|
#Get the body
|
226
236
|
body = getBody(config.getAction(),input)
|
227
237
|
|
228
238
|
#add url parameters to path
|
229
|
-
|
239
|
+
if params.any?
|
240
|
+
fullUrl = encode_query_params(fullUrl,params)
|
241
|
+
end
|
230
242
|
|
231
243
|
uri = URI(fullUrl)
|
232
244
|
|
@@ -250,13 +262,12 @@ module MasterCard
|
|
250
262
|
|
251
263
|
|
252
264
|
#Add default headers
|
253
|
-
request
|
254
|
-
request.
|
255
|
-
request.add_field(KEY_USER_AGENT,RUBY_SDK+"/"+metadata.getVersion())
|
265
|
+
request[KEY_ACCEPT] = APPLICATION_JSON
|
266
|
+
request[KEY_USER_AGENT] =Constants::getCoreVersion()+"/"+metadata.getVersion()
|
256
267
|
|
257
268
|
#Add body
|
258
|
-
|
259
269
|
unless body.nil?
|
270
|
+
request[KEY_CONTENT_TYPE] = APPLICATION_JSON
|
260
271
|
request.body = body.to_json
|
261
272
|
end
|
262
273
|
|
@@ -266,7 +277,7 @@ module MasterCard
|
|
266
277
|
end
|
267
278
|
|
268
279
|
#Sign and get back the request
|
269
|
-
request = Config.getAuthentication().signRequest(
|
280
|
+
request = Config.getAuthentication().signRequest(request,params)
|
270
281
|
|
271
282
|
return request
|
272
283
|
|
@@ -337,6 +337,75 @@ module MasterCard
|
|
337
337
|
|
338
338
|
|
339
339
|
|
340
|
+
end
|
341
|
+
|
342
|
+
################################################################################
|
343
|
+
# CaseInsensitiveMap
|
344
|
+
################################################################################
|
345
|
+
|
346
|
+
class CaseInsensitiveMap < SmartMap
|
347
|
+
def initialize
|
348
|
+
#call the base class constructor
|
349
|
+
super()
|
350
|
+
end
|
351
|
+
|
352
|
+
def containsKeys(key)
|
353
|
+
return super(key.to_s.downcase)
|
354
|
+
end
|
355
|
+
|
356
|
+
def get(key)
|
357
|
+
return super(key.to_s.downcase)
|
358
|
+
end
|
359
|
+
|
360
|
+
def set(key,value)
|
361
|
+
super(key.to_s.downcase, value)
|
362
|
+
end
|
363
|
+
|
364
|
+
def setAll(map)
|
365
|
+
properties = parseMap(map)
|
366
|
+
super(map)
|
367
|
+
end
|
368
|
+
|
369
|
+
private
|
370
|
+
def parseMap(map)
|
371
|
+
parsedMap = {}
|
372
|
+
map.each do |k, v|
|
373
|
+
if v.is_a?(Array)
|
374
|
+
parsedMap[k.to_s.downcase] = parseList(v)
|
375
|
+
elsif v.is_a?(Hash)
|
376
|
+
parsedMap[k.to_s.downcase] = parseMap(v)
|
377
|
+
else
|
378
|
+
parsedMap[k.to_s.downcase] = v
|
379
|
+
end
|
380
|
+
end
|
381
|
+
return parsedMap
|
382
|
+
end
|
383
|
+
|
384
|
+
def parseList(list)
|
385
|
+
parsedList = []
|
386
|
+
list.each do |v|
|
387
|
+
if v.is_a?(Array)
|
388
|
+
parsedList << parseList(v)
|
389
|
+
elsif v.is_a?(Hash)
|
390
|
+
parsedList << parseMap(v)
|
391
|
+
else
|
392
|
+
parsedList << v
|
393
|
+
end
|
394
|
+
end
|
395
|
+
return parsedList
|
396
|
+
end
|
397
|
+
|
398
|
+
end
|
399
|
+
|
400
|
+
################################################################################
|
401
|
+
# RequestMap
|
402
|
+
################################################################################
|
403
|
+
|
404
|
+
class RequestMap < SmartMap
|
405
|
+
def initialize
|
406
|
+
#call the base class constructor
|
407
|
+
super()
|
408
|
+
end
|
340
409
|
end
|
341
410
|
|
342
411
|
################################################################################
|
@@ -345,10 +414,11 @@ module MasterCard
|
|
345
414
|
|
346
415
|
class OperationMetadata
|
347
416
|
|
348
|
-
def initialize(version, host, context = nil)
|
417
|
+
def initialize(version, host, context = nil, jsonNative = false)
|
349
418
|
@version = version
|
350
419
|
@host = host
|
351
420
|
@context = context
|
421
|
+
@jsonNative = jsonNative
|
352
422
|
end
|
353
423
|
|
354
424
|
def getVersion()
|
@@ -362,6 +432,10 @@ module MasterCard
|
|
362
432
|
def getContext()
|
363
433
|
return @context
|
364
434
|
end
|
435
|
+
|
436
|
+
def isJsonNative()
|
437
|
+
return @jsonNative
|
438
|
+
end
|
365
439
|
|
366
440
|
end
|
367
441
|
|
@@ -397,16 +471,7 @@ module MasterCard
|
|
397
471
|
|
398
472
|
end
|
399
473
|
|
400
|
-
################################################################################
|
401
|
-
# RequestMap
|
402
|
-
################################################################################
|
403
474
|
|
404
|
-
class RequestMap < SmartMap
|
405
|
-
def initialize
|
406
|
-
#call the base class constructor
|
407
|
-
super()
|
408
|
-
end
|
409
|
-
end
|
410
475
|
|
411
476
|
|
412
477
|
|
@@ -62,20 +62,13 @@ module MasterCard
|
|
62
62
|
oAuthParameters.setOAuthSignatureMethod("RSA-SHA256")
|
63
63
|
oAuthParameters.setOAuthVersion("1.0")
|
64
64
|
|
65
|
-
|
66
|
-
|
65
|
+
unless body.nil?
|
66
|
+
encodedHash = sha256Base64Encode(body)
|
67
|
+
oAuthParameters.setOAuthBodyHash(encodedHash)
|
67
68
|
end
|
68
69
|
|
69
|
-
begin
|
70
|
-
body = body.to_json
|
71
|
-
rescue
|
72
|
-
#Do nothing and hope for the best
|
73
|
-
end
|
74
|
-
|
75
|
-
encodedHash = sha256Base64Encode(body)
|
76
|
-
oAuthParameters.setOAuthBodyHash(encodedHash)
|
77
|
-
|
78
70
|
return oAuthParameters
|
71
|
+
|
79
72
|
end
|
80
73
|
|
81
74
|
def getBaseString(url,method,params,oAuthParams)
|
@@ -94,9 +87,9 @@ module MasterCard
|
|
94
87
|
end
|
95
88
|
|
96
89
|
|
97
|
-
def signRequest(
|
90
|
+
def signRequest(request,params)
|
98
91
|
|
99
|
-
oauth_key = getOAuthKey(
|
92
|
+
oauth_key = getOAuthKey(request.uri.to_s,request.method,request.body,params)
|
100
93
|
request.add_field(OAuthParameters::AUTHORIZATION,oauth_key)
|
101
94
|
return request
|
102
95
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-#
|
2
|
+
# Copyright (c) 2016 MasterCard International Incorporated
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without modification, are
|
6
|
+
# permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# Redistributions of source code must retain the above copyright notice, this list of
|
9
|
+
# conditions and the following disclaimer.
|
10
|
+
# Redistributions in binary form must reproduce the above copyright notice, this list of
|
11
|
+
# conditions and the following disclaimer in the documentation and/or other materials
|
12
|
+
# provided with the distribution.
|
13
|
+
# Neither the name of the MasterCard International Incorporated nor the names of its
|
14
|
+
# contributors may be used to endorse or promote products derived from this software
|
15
|
+
# without specific prior written permission.
|
16
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
17
|
+
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
18
|
+
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
19
|
+
# SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
20
|
+
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
21
|
+
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
22
|
+
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
23
|
+
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
24
|
+
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
25
|
+
# SUCH DAMAGE.
|
26
|
+
#
|
27
|
+
Gem::Specification.new do |gem|
|
28
|
+
gem.name = "mastercard_api_core"
|
29
|
+
gem.authors = ["MasterCard Worldwide"]
|
30
|
+
gem.email = ["APISupport@mastercard.com"]
|
31
|
+
gem.summary = %q{MasterCard core SDK}
|
32
|
+
gem.description = %q{This is the MasterCard OpenAPI core SDK. This provides the base functionality for all MasterCard APIs}
|
33
|
+
gem.homepage = "https://developer.mastercard.com"
|
34
|
+
gem.version = "1.4.7"
|
35
|
+
gem.license = "BSD-2-Clause"
|
36
|
+
|
37
|
+
gem.files = Dir["{bin,spec,lib}/**/*"]+ Dir["data/*"] + ["mastercard_api_core.gemspec"]
|
38
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
39
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
40
|
+
gem.require_paths = ["lib"]
|
41
|
+
gem.add_development_dependency 'simplecov', '~> 0'
|
42
|
+
gem.add_development_dependency 'ci_reporter_minitest', '~> 0'
|
43
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mastercard_api_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MasterCard Worldwide
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simplecov
|
@@ -57,6 +57,7 @@ files:
|
|
57
57
|
- lib/mastercard/security/oauth.rb
|
58
58
|
- lib/mastercard/security/util.rb
|
59
59
|
- lib/mastercard_api_core.rb
|
60
|
+
- mastercard_api_core.gemspec
|
60
61
|
homepage: https://developer.mastercard.com
|
61
62
|
licenses:
|
62
63
|
- BSD-2-Clause
|