mastercard_api_core 1.2.1 → 1.3.0

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: 5c8630c06a9245987849c8dd7ee177d818255174
4
- data.tar.gz: 94b4c81402a092e3730b6e2b55aa019e13ebb556
3
+ metadata.gz: 935f938b44f37f40d32dc83246584931f8859a9f
4
+ data.tar.gz: d4b93fb4e1c91b374113ac6008f4b9c78edd9713
5
5
  SHA512:
6
- metadata.gz: a37f3a37d9f27fb80852f3382d2cf60670945f6b14fb09a8ea7504206e666078b831cfa81f2d1facd39054750708579015f4d24952d08a282de28062178b4cbe
7
- data.tar.gz: 830d89624aaf5ee17dcb7eeb9c8527e3f48dac7fa0468ddb564b62dd7d7cb7d8478a8a9364f6d21c1830f0b5d97d079f42b3b0b616a0406b564468398595aaea
6
+ metadata.gz: 19f4e5015aa084f5090fa4d5d245080d03228b48d9ed5d0d424734e8df7e8c3f95f35eb0035efb3a4d55a3f0787a696524ef9d1901b9dca4e8ce40aa8ec2a445
7
+ data.tar.gz: 920550390ae05f073b126b369832ec7cb66f002c1d6ba3106879afa4ed13ab18b8249e9c0bcf8e3dea3ab2891f8d3b1a49187aaf377abcd0079da0ed0da6cf59
@@ -31,10 +31,10 @@ module MasterCard
31
31
  class Config
32
32
 
33
33
  private
34
- @@sandbox = true
35
34
  @@debug = false
36
- @@authentication = nil
37
- @@localhost = false
35
+ @@environment = Environment::SANDBOX
36
+ @@authentication = nil;
37
+ @@registeredInstances = {}
38
38
 
39
39
  public
40
40
  def self.setDebug(debug)
@@ -46,21 +46,33 @@ module MasterCard
46
46
  end
47
47
 
48
48
  def self.setSandbox(sandbox)
49
- @@sandbox = sandbox
49
+ if sandbox
50
+ @@environment = Environment::SANDBOX
51
+ else
52
+ @@environment = Environment::PRODUCTION
53
+ end
50
54
  end
51
-
52
- def self.isSandbox()
53
- return @@sandbox
55
+
56
+ def self.isSandbox
57
+ return @@environment == Environment::SANDBOX
54
58
  end
55
59
 
56
- def self.setLocal(local)
57
- @@localhost = local
60
+
61
+ def self.getEnvironment
62
+ return @@environment
58
63
  end
64
+
65
+ def self.setEnvironment(environment)
59
66
 
60
- def self.isLocal
61
- return @@localhost
67
+ if !environment.nil? && !environment.empty?
68
+ if Environment::MAPPING.key?(environment)
69
+ @@registeredInstances.values().each { |instance| instance.setEnvironment(environment) }
70
+ @@environment = environment
71
+ end
72
+ end
62
73
  end
63
74
 
75
+
64
76
  def self.setAuthentication(auth)
65
77
  @@authentication = auth
66
78
  end
@@ -69,13 +81,20 @@ module MasterCard
69
81
  return @@authentication
70
82
  end
71
83
 
72
- def self.getAPIBaseURL
73
- if @@sandbox
74
- return Constants::API_BASE_SANDBOX_URL
75
- else
76
- return Constants::API_BASE_LIVE_URL
84
+ def self.registerResourceConfig(instance)
85
+ if !@@registeredInstances.key?(instance.class.name)
86
+ @@registeredInstances[instance.class.name] = instance
77
87
  end
78
88
  end
89
+
90
+ def self.clearResourceConfig
91
+ @@registeredInstances = {}
92
+ end
93
+
94
+ def self.sizeResourceConfig
95
+ return @@registeredInstances.length
96
+ end
97
+
79
98
  end
80
99
  end
81
100
  end
@@ -30,5 +30,30 @@ module MasterCard
30
30
  API_BASE_LIVE_URL = "https://api.mastercard.com"
31
31
  API_BASE_SANDBOX_URL = "https://sandbox.api.mastercard.com"
32
32
  end
33
+
34
+ module Environment
35
+ PRODUCTION = "production"
36
+ SANDBOX = "sandbox"
37
+ STAGE = "stage"
38
+ DEV = "dev"
39
+ MTF = "mtf"
40
+ ITF = "itf"
41
+ LOCALHOST = "localhost"
42
+ DEVCLOUD = "devcloud"
43
+ LABSCLOUD = "labscloud"
44
+ OTHER1 = "other1"
45
+ OTHER2 = "other2"
46
+ OTHER3 = "other3"
47
+ MAPPING = {
48
+ "production" => ["https://api.mastercard.com", nil],
49
+ "sandbox" => ["https://sandbox.api.mastercard.com", nil],
50
+ "stage" => ["https://stage.api.mastercard.com", nil],
51
+ "dev" => ["https://dev.api.mastercard.com", nil],
52
+ "mtf" => ["https://sandbox.api.mastercard.com", "mtf"],
53
+ "itf" => ["https://sandbox.api.mastercard.com", "itf"],
54
+ "localhost" => ["http://localhost:8081", nil]
55
+ }
56
+
57
+ end
33
58
  end
34
59
  end
@@ -56,28 +56,20 @@ module MasterCard
56
56
  JSON_STR = "JSON"
57
57
 
58
58
 
59
- def initialize()
60
- #Set the parameters
61
- @baseURL = Config.getAPIBaseURL()
62
-
63
- @baseURL = removeForwardSlashFromTail(@baseURL)
64
-
65
- #Verify if the URL is correct
66
- unless Util.validateURL(@baseURL)
67
- raise APIException.new "URL: '" + @baseURL + "' is not a valid url"
68
- end
69
-
70
- end
71
-
72
59
  def execute(config,metadata,input)
73
60
 
74
61
  #Check preconditions for execute
75
62
  preCheck()
76
63
 
77
- resolvedHost = @baseURL
78
- unless metadata.getHost().nil?
79
- resolvedHost = metadata.getHost()
64
+ resolvedHost = metadata.getHost()
65
+ if resolvedHost != nil && resolvedHost != 0
66
+ unless Util.validateURL(resolvedHost)
67
+ raise APIException.new "URL: '" + resolvedHost + "' is not a valid url"
68
+ end
69
+ else
70
+ raise APIException.new "URL: '' is not a valid url"
80
71
  end
72
+
81
73
 
82
74
  uri = URI.parse(resolvedHost)
83
75
  #Get the http object
@@ -221,12 +213,21 @@ module MasterCard
221
213
  queryParams = Util.subMap(input,config.getQueryParams())
222
214
 
223
215
  #We need to resolve the host
224
- resolvedHost = @baseURL
225
- unless metadata.getHost().nil?
226
- resolvedHost = metadata.getHost()
216
+ resolvedHost = metadata.getHost()
217
+
218
+ resourcePath = config.getResoucePath().dup
219
+ if (resourcePath.index("{:env}"))
220
+ contenxt = ""
221
+
222
+ if !metadata.getContext().nil? && !metadata.getContext().empty?
223
+ contenxt = metadata.getContext()
224
+ end
225
+
226
+ resourcePath.sub!("{:env}", contenxt)
227
+ resourcePath.sub!("//", "/")
227
228
  end
228
229
 
229
- fullUrl = resolvedHost + config.getResoucePath()
230
+ fullUrl = resolvedHost + resourcePath
230
231
 
231
232
  #Get the resourcePath containing values from input
232
233
  fullUrl = getFullResourcePath(config.getAction(),fullUrl,input)
@@ -347,9 +347,10 @@ module MasterCard
347
347
 
348
348
  class OperationMetadata
349
349
 
350
- def initialize(version, host)
350
+ def initialize(version, host, context = nil)
351
351
  @version = version
352
352
  @host = host
353
+ @context = context
353
354
  end
354
355
 
355
356
  def getVersion()
@@ -359,6 +360,10 @@ module MasterCard
359
360
  def getHost()
360
361
  return @host
361
362
  end
363
+
364
+ def getContext()
365
+ return @context
366
+ end
362
367
 
363
368
  end
364
369
 
@@ -36,8 +36,11 @@ module MasterCard
36
36
  def validateURL(url)
37
37
  #
38
38
  # Validates that the given string is a valid URL
39
- return !URI.regexp.match(url).nil?
40
-
39
+ if url =~ URI::DEFAULT_PARSER.make_regexp
40
+ return true
41
+ else
42
+ return false
43
+ end
41
44
  end
42
45
 
43
46
  def normalizeParams(url,params)
@@ -131,6 +134,12 @@ module MasterCard
131
134
  return base64Encode(Digest::SHA1.digest text)
132
135
  end
133
136
 
137
+ def sha256Base64Encode(text)
138
+ #
139
+ #Base 64 encodes the SHA1 digest of text
140
+ return base64Encode(Digest::SHA256.digest text)
141
+ end
142
+
134
143
  def uriRfc3986Encode(value)
135
144
  #
136
145
  #RFC 3986 encodes the value
@@ -59,7 +59,7 @@ module MasterCard
59
59
  oAuthParameters.setOAuthConsumerKey(@clientId)
60
60
  oAuthParameters.setOAuthNonce(Util.getNonce())
61
61
  oAuthParameters.setOAuthTimestamp(Util.getTimestamp())
62
- oAuthParameters.setOAuthSignatureMethod("RSA-SHA1")
62
+ oAuthParameters.setOAuthSignatureMethod("RSA-SHA256")
63
63
  oAuthParameters.setOAuthVersion("1.0")
64
64
 
65
65
  if body.nil?
@@ -72,7 +72,7 @@ module MasterCard
72
72
  #Do nothing and hope for the best
73
73
  end
74
74
 
75
- encodedHash = sha1Base64Encode(body)
75
+ encodedHash = sha256Base64Encode(body)
76
76
  oAuthParameters.setOAuthBodyHash(encodedHash)
77
77
 
78
78
  return oAuthParameters
@@ -133,7 +133,7 @@ module MasterCard
133
133
  privateKeyFile = File.read(@privateKey)
134
134
 
135
135
  p12 = OpenSSL::PKCS12.new(privateKeyFile, @password)
136
- sign = p12.key.sign OpenSSL::Digest::SHA1.new, message
136
+ sign = p12.key.sign OpenSSL::Digest::SHA256.new, message
137
137
 
138
138
  return base64Encode(sign)
139
139
 
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.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MasterCard Worldwide
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-23 00:00:00.000000000 Z
11
+ date: 2016-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov