mastercard_oauth1_signer 1.1.1 → 1.1.2
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/oauth.rb +17 -17
- data/oauth1_signer_ruby.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc99c2f741d407afea8bfa4a173841c65c65388b01bbb188e0d91229bdbdbb1c
|
4
|
+
data.tar.gz: fde6a72486a7b34b7cc53829694099b68ff9827feb24952314346fe45f8c678a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03edc59be830218437c63ba5027920e42bbcf7740a139067920076f48e1d88b67b622bd9bdf23da7b9606c61f3b3c9190ad8a373c8146d48a5be4ae65e7916aa
|
7
|
+
data.tar.gz: 97f9570af04be215ff34d00ce45f7a9934dc6d8b69ff617f820a3b2f2efab06523e468e88aa0310cda7d53ce961ef7e3f805c0b71a2582b94c3aab3c95f0d6a1
|
data/lib/oauth.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'base64'
|
2
4
|
require 'openssl'
|
3
5
|
require 'uri'
|
4
6
|
|
5
7
|
class OAuth
|
6
8
|
class << self
|
7
|
-
|
8
|
-
|
9
|
-
SHA_BITS = '256'.freeze
|
9
|
+
EMPTY_STRING = ''
|
10
|
+
SHA_BITS = '256'
|
10
11
|
|
11
12
|
# Creates a Mastercard API compliant OAuth Authorization header
|
12
13
|
#
|
@@ -53,17 +54,17 @@ class OAuth
|
|
53
54
|
query_pairs = {}
|
54
55
|
pairs = query_params.split('&').sort_by(&:downcase)
|
55
56
|
|
56
|
-
pairs.each
|
57
|
+
pairs.each do |pair|
|
57
58
|
idx = pair.index('=')
|
58
|
-
key = idx
|
59
|
+
key = idx.positive? ? pair[0..(idx - 1)] : pair
|
59
60
|
query_pairs[key] = [] unless query_pairs.include?(key)
|
60
|
-
value = if idx
|
61
|
+
value = if idx.positive? && pair.length > idx + 1
|
61
62
|
pair[(idx + 1)..pair.length]
|
62
63
|
else
|
63
64
|
EMPTY_STRING
|
64
65
|
end
|
65
66
|
query_pairs[key].push(value)
|
66
|
-
|
67
|
+
end
|
67
68
|
query_pairs
|
68
69
|
end
|
69
70
|
|
@@ -93,11 +94,11 @@ class OAuth
|
|
93
94
|
#
|
94
95
|
def get_authorization_string(oauth_params)
|
95
96
|
header = 'OAuth '
|
96
|
-
oauth_params.each
|
97
|
+
oauth_params.each do |entry|
|
97
98
|
entry_key = entry[0]
|
98
99
|
entry_val = entry[1]
|
99
100
|
header = "#{header}#{entry_key}=\"#{entry_val}\","
|
100
|
-
|
101
|
+
end
|
101
102
|
# Remove trailing ,
|
102
103
|
header.slice(0, header.length - 1)
|
103
104
|
end
|
@@ -114,8 +115,8 @@ class OAuth
|
|
114
115
|
# Lowercase scheme and authority
|
115
116
|
# Remove redundant port, query, and fragment
|
116
117
|
base_uri = "#{url.scheme.downcase}://#{url.host.downcase}"
|
117
|
-
base_uri += ":#{url.port}" if url.scheme.downcase ==
|
118
|
-
base_uri += ":#{url.port}" if url.scheme.downcase ==
|
118
|
+
base_uri += ":#{url.port}" if (url.scheme.downcase == 'https') && (url.port != 443)
|
119
|
+
base_uri += ":#{url.port}" if (url.scheme.downcase == 'http') && (url.port != 80)
|
119
120
|
base_uri += "/#{url.path[1..-1]}"
|
120
121
|
end
|
121
122
|
|
@@ -131,7 +132,7 @@ class OAuth
|
|
131
132
|
consolidated_params = {}.merge(query_params_map)
|
132
133
|
|
133
134
|
# Add OAuth params to consolidated params map
|
134
|
-
oauth_param_map.each
|
135
|
+
oauth_param_map.each do |entry|
|
135
136
|
entry_key = entry[0]
|
136
137
|
entry_val = entry[1]
|
137
138
|
consolidated_params[entry_key] =
|
@@ -140,8 +141,9 @@ class OAuth
|
|
140
141
|
else
|
141
142
|
[].push(entry_val)
|
142
143
|
end
|
143
|
-
|
144
|
+
end
|
144
145
|
|
146
|
+
consolidated_params = consolidated_params.sort_by { |k, _| k }.to_h
|
145
147
|
oauth_params = ''
|
146
148
|
|
147
149
|
# Add all parameters to the parameter string for signing
|
@@ -159,9 +161,7 @@ class OAuth
|
|
159
161
|
|
160
162
|
# Remove trailing ampersand
|
161
163
|
string_length = oauth_params.length - 1
|
162
|
-
if oauth_params.end_with?('&')
|
163
|
-
oauth_params = oauth_params.slice(0, string_length)
|
164
|
-
end
|
164
|
+
oauth_params = oauth_params.slice(0, string_length) if oauth_params.end_with?('&')
|
165
165
|
|
166
166
|
oauth_params
|
167
167
|
end
|
@@ -198,7 +198,7 @@ class OAuth
|
|
198
198
|
#
|
199
199
|
# noinspection RubyArgCount
|
200
200
|
def OAuth.sign_signature_base_string(sbs, signing_key)
|
201
|
-
digest = OpenSSL::Digest
|
201
|
+
digest = OpenSSL::Digest.new('SHA256')
|
202
202
|
rsa_key = OpenSSL::PKey::RSA.new signing_key
|
203
203
|
|
204
204
|
signature = ''
|
data/oauth1_signer_ruby.gemspec
CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |gem|
|
|
3
3
|
gem.authors = ["Mastercard"]
|
4
4
|
gem.summary = %q{Mastercard client authentication library}
|
5
5
|
gem.description = %q{Zero dependency library for generating a Mastercard API compliant OAuth signature}
|
6
|
-
gem.version = "1.1.
|
6
|
+
gem.version = "1.1.2"
|
7
7
|
gem.license = "MIT"
|
8
8
|
gem.homepage = "https://github.com/Mastercard/oauth1-signer-ruby"
|
9
9
|
gem.files = Dir["{bin,spec,lib}/**/*"]+ Dir["data/*"] + ["oauth1_signer_ruby.gemspec"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mastercard_oauth1_signer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mastercard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|