mauth-client 6.2.0 → 6.4.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 +4 -4
- data/.rubocop.yml +53 -0
- data/.ruby-version +1 -0
- data/.travis.yml +23 -10
- data/Appraisals +6 -0
- data/CHANGELOG.md +15 -3
- data/Gemfile +2 -0
- data/Rakefile +4 -2
- data/examples/Gemfile +2 -0
- data/examples/Gemfile.lock +35 -13
- data/examples/get_user_info.rb +6 -6
- data/exe/mauth-client +88 -91
- data/exe/mauth-proxy +10 -10
- data/gemfiles/faraday_2.x.gemfile +7 -0
- data/lib/mauth/autoload.rb +2 -0
- data/lib/mauth/client/authenticator_base.rb +9 -6
- data/lib/mauth/client/local_authenticator.rb +12 -9
- data/lib/mauth/client/remote_authenticator.rb +20 -10
- data/lib/mauth/client/security_token_cacher.rb +36 -37
- data/lib/mauth/client/signer.rb +6 -4
- data/lib/mauth/client.rb +46 -37
- data/lib/mauth/core_ext.rb +2 -0
- data/lib/mauth/dice_bag/mauth_templates.rb +3 -1
- data/lib/mauth/errors.rb +2 -0
- data/lib/mauth/fake/rack.rb +17 -13
- data/lib/mauth/faraday.rb +5 -1
- data/lib/mauth/middleware.rb +4 -2
- data/lib/mauth/proxy.rb +12 -9
- data/lib/mauth/rack.rb +14 -6
- data/lib/mauth/request_and_response.rb +21 -13
- data/lib/mauth/version.rb +1 -1
- data/lib/mauth-client.rb +2 -0
- data/lib/rack/mauth.rb +2 -0
- data/mauth-client.gemspec +16 -11
- metadata +94 -69
data/lib/mauth/faraday.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'mauth/middleware'
|
2
4
|
require 'mauth/request_and_response'
|
3
5
|
|
@@ -31,6 +33,7 @@ module MAuth
|
|
31
33
|
# passed to a Mauth::Client for signing
|
32
34
|
class Request < MAuth::Request
|
33
35
|
attr_reader :request_env
|
36
|
+
|
34
37
|
def initialize(request_env)
|
35
38
|
@request_env = request_env
|
36
39
|
end
|
@@ -59,6 +62,7 @@ module MAuth
|
|
59
62
|
class Response < MAuth::Response
|
60
63
|
include Signed
|
61
64
|
attr_reader :response_env
|
65
|
+
|
62
66
|
def initialize(response_env)
|
63
67
|
@response_env = response_env
|
64
68
|
end
|
@@ -86,7 +90,7 @@ module MAuth
|
|
86
90
|
|
87
91
|
# add MAuth-Client's user-agent to a request
|
88
92
|
class MAuthClientUserAgent
|
89
|
-
def initialize(app, agent_base =
|
93
|
+
def initialize(app, agent_base = 'Mauth-Client')
|
90
94
|
@app = app
|
91
95
|
@agent_base = agent_base
|
92
96
|
end
|
data/lib/mauth/middleware.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'mauth/core_ext'
|
2
4
|
module MAuth
|
3
5
|
# base class for middleware, common to both Faraday and Rack
|
@@ -15,9 +17,9 @@ module MAuth
|
|
15
17
|
# this method may be overloaded to provide more flexibility in providing a MAuth::Client
|
16
18
|
def mauth_client
|
17
19
|
require 'mauth/client'
|
18
|
-
# @
|
20
|
+
# @mauth_client ivar only used here for caching; should not be used by other methods, in
|
19
21
|
# order that overloading #mauth_client will work
|
20
|
-
@
|
22
|
+
@mauth_client ||= @config['mauth_client'] || MAuth::Client.new(@config)
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
data/lib/mauth/proxy.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'mauth/client'
|
2
4
|
require 'faraday'
|
3
5
|
require 'rack'
|
@@ -7,6 +9,8 @@ module MAuth
|
|
7
9
|
# proxy them to a target URI. the responses from the target may be authenticated, with MAuth
|
8
10
|
# (and are by default).
|
9
11
|
class Proxy
|
12
|
+
EXCLUDED_RESPONSE_HEADERS = %w[Content-Length Transfer-Encoding].map(&:downcase)
|
13
|
+
|
10
14
|
# target_uri is the base relative to which requests are made.
|
11
15
|
#
|
12
16
|
# options:
|
@@ -38,12 +42,11 @@ module MAuth
|
|
38
42
|
end
|
39
43
|
end
|
40
44
|
@persistent_headers = {}
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
45
|
+
options[:headers]&.each do |cur|
|
46
|
+
raise 'Headers must be in the format of [key]:[value]' unless cur.include?(':')
|
47
|
+
|
48
|
+
key, _throw_away, value = cur.partition(':')
|
49
|
+
@persistent_headers[key.strip] = value.strip
|
47
50
|
end
|
48
51
|
end
|
49
52
|
|
@@ -56,20 +59,20 @@ module MAuth
|
|
56
59
|
request_headers = {}
|
57
60
|
request_env.each do |k, v|
|
58
61
|
if k.start_with?('HTTP_') && k != 'HTTP_HOST'
|
59
|
-
name = k.
|
62
|
+
name = k.delete_prefix('HTTP_')
|
60
63
|
request_headers[name] = v
|
61
64
|
end
|
62
65
|
end
|
63
66
|
request_headers.merge!(@persistent_headers)
|
64
67
|
if @browser_proxy
|
65
|
-
target_uri = request_env[
|
68
|
+
target_uri = request_env['REQUEST_URI']
|
66
69
|
connection = @target_uris.any? { |u| target_uri.start_with? u } ? @signer_connection : @unsigned_connection
|
67
70
|
response = connection.run_request(request_method, target_uri, request_body, request_headers)
|
68
71
|
else
|
69
72
|
response = @connection.run_request(request_method, request.fullpath, request_body, request_headers)
|
70
73
|
end
|
71
74
|
response_headers = response.headers.reject do |name, _value|
|
72
|
-
|
75
|
+
EXCLUDED_RESPONSE_HEADERS.include?(name.downcase)
|
73
76
|
end
|
74
77
|
[response.status, response_headers, [response.body || '']]
|
75
78
|
end
|
data/lib/mauth/rack.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'mauth/middleware'
|
2
4
|
require 'mauth/request_and_response'
|
3
5
|
require 'rack/utils'
|
@@ -41,7 +43,7 @@ module MAuth
|
|
41
43
|
# discards the body if REQUEST_METHOD is HEAD. sets the Content-Length.
|
42
44
|
def handle_head(env)
|
43
45
|
status, headers, body = *yield
|
44
|
-
headers[
|
46
|
+
headers['Content-Length'] = body.sum(&:bytesize).to_s
|
45
47
|
[status, headers, env['REQUEST_METHOD'].casecmp('head').zero? ? [] : body]
|
46
48
|
end
|
47
49
|
|
@@ -75,7 +77,8 @@ module MAuth
|
|
75
77
|
handle_head(env) do
|
76
78
|
body = {
|
77
79
|
'type' => 'errors:mauth:missing_v2',
|
78
|
-
'title' => 'This service requires mAuth v2 mcc-authentication header. Upgrade your mAuth library and
|
80
|
+
'title' => 'This service requires mAuth v2 mcc-authentication header. Upgrade your mAuth library and ' \
|
81
|
+
'configure it properly.'
|
79
82
|
}
|
80
83
|
[401, { 'Content-Type' => 'application/json' }, [JSON.pretty_generate(body)]]
|
81
84
|
end
|
@@ -85,7 +88,7 @@ module MAuth
|
|
85
88
|
# same as MAuth::Rack::RequestAuthenticator, but does not authenticate /app_status
|
86
89
|
class RequestAuthenticatorNoAppStatus < RequestAuthenticator
|
87
90
|
def should_authenticate?(env)
|
88
|
-
env['PATH_INFO'] !=
|
91
|
+
env['PATH_INFO'] != '/app_status' && super
|
89
92
|
end
|
90
93
|
end
|
91
94
|
|
@@ -95,9 +98,10 @@ module MAuth
|
|
95
98
|
unsigned_response = @app.call(env)
|
96
99
|
|
97
100
|
method =
|
98
|
-
|
101
|
+
case env['mauth.protocol_version']
|
102
|
+
when 2
|
99
103
|
:signed_v2
|
100
|
-
|
104
|
+
when 1
|
101
105
|
:signed_v1
|
102
106
|
else
|
103
107
|
# if no protocol was supplied then use `signed` which either signs
|
@@ -115,6 +119,7 @@ module MAuth
|
|
115
119
|
class Request < MAuth::Request
|
116
120
|
include Signed
|
117
121
|
attr_reader :env
|
122
|
+
|
118
123
|
def initialize(env)
|
119
124
|
@env = env
|
120
125
|
end
|
@@ -166,7 +171,10 @@ module MAuth
|
|
166
171
|
def attributes_for_signing
|
167
172
|
@attributes_for_signing ||= begin
|
168
173
|
body = ''
|
169
|
-
|
174
|
+
# NOTE: rack only requires #each be defined on the body, so not using map or inject
|
175
|
+
@body.each do |part|
|
176
|
+
body << part
|
177
|
+
end
|
170
178
|
{ status_code: @status.to_i, body: body }
|
171
179
|
end
|
172
180
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'openssl'
|
2
4
|
require 'addressable'
|
3
5
|
|
4
6
|
module MAuth
|
@@ -31,11 +33,15 @@ module MAuth
|
|
31
33
|
# current_seconds_since_epoch
|
32
34
|
def string_to_sign_v1(more_attributes)
|
33
35
|
attributes_for_signing = self.attributes_for_signing.merge(more_attributes)
|
34
|
-
missing_attributes = self.class::SIGNATURE_COMPONENTS.select
|
36
|
+
missing_attributes = self.class::SIGNATURE_COMPONENTS.select do |key|
|
37
|
+
!attributes_for_signing.key?(key) || attributes_for_signing[key].nil?
|
38
|
+
end
|
35
39
|
missing_attributes.delete(:body) # body may be omitted
|
36
40
|
if missing_attributes.any?
|
37
|
-
raise(UnableToSignError,
|
41
|
+
raise(UnableToSignError,
|
42
|
+
"Missing required attributes to sign: #{missing_attributes.inspect}\non object to sign: #{inspect}")
|
38
43
|
end
|
44
|
+
|
39
45
|
self.class::SIGNATURE_COMPONENTS.map { |k| attributes_for_signing[k].to_s }.join("\n")
|
40
46
|
end
|
41
47
|
|
@@ -56,23 +62,25 @@ module MAuth
|
|
56
62
|
# app_uuid + <LF> +
|
57
63
|
# current_seconds_since_epoch
|
58
64
|
def string_to_sign_v2(override_attrs)
|
59
|
-
attrs_with_overrides =
|
65
|
+
attrs_with_overrides = attributes_for_signing.merge(override_attrs)
|
60
66
|
|
61
67
|
# memoization of body_digest to avoid hashing three times when we call
|
62
68
|
# string_to_sign_v2 three times in client#signature_valid_v2!
|
63
69
|
# note that if :body is nil we hash an empty string ('')
|
64
|
-
attrs_with_overrides[:body_digest] ||= Digest
|
65
|
-
attrs_with_overrides[:encoded_query_params] =
|
70
|
+
attrs_with_overrides[:body_digest] ||= OpenSSL::Digest.hexdigest('SHA512', attrs_with_overrides[:body] || '')
|
71
|
+
attrs_with_overrides[:encoded_query_params] =
|
72
|
+
unescape_encode_query_string(attrs_with_overrides[:query_string] || '')
|
66
73
|
attrs_with_overrides[:request_url] = normalize_path(attrs_with_overrides[:request_url])
|
67
74
|
|
68
75
|
missing_attributes = self.class::SIGNATURE_COMPONENTS_V2.reject do |key|
|
69
|
-
attrs_with_overrides
|
76
|
+
attrs_with_overrides[key]
|
70
77
|
end
|
71
78
|
|
72
79
|
missing_attributes.delete(:body_digest) # body may be omitted
|
73
80
|
missing_attributes.delete(:encoded_query_params) # query_string may be omitted
|
74
81
|
if missing_attributes.any?
|
75
|
-
raise(UnableToSignError,
|
82
|
+
raise(UnableToSignError,
|
83
|
+
"Missing required attributes to sign: #{missing_attributes.inspect}\non object to sign: #{inspect}")
|
76
84
|
end
|
77
85
|
|
78
86
|
self.class::SIGNATURE_COMPONENTS_V2.map do |k|
|
@@ -88,17 +96,17 @@ module MAuth
|
|
88
96
|
# i.e. /./example => /example ; /example/.. => /
|
89
97
|
# String#squeeze removes duplicated slahes i.e. /// => /
|
90
98
|
# String#gsub normalizes percent encoding to uppercase i.e. %cf%80 => %CF%80
|
91
|
-
Addressable::URI.normalize_path(path).squeeze('/')
|
92
|
-
gsub(/%[a-f0-9]{2}/, &:upcase)
|
99
|
+
Addressable::URI.normalize_path(path).squeeze('/')
|
100
|
+
.gsub(/%[a-f0-9]{2}/, &:upcase)
|
93
101
|
end
|
94
102
|
|
95
103
|
# sorts query string parameters by codepoint, uri encodes keys and values,
|
96
104
|
# and rejoins parameters into a query string
|
97
105
|
def unescape_encode_query_string(q_string)
|
98
|
-
|
106
|
+
q_string.split('&').map do |part|
|
99
107
|
k, _eq, v = part.partition('=')
|
100
108
|
[CGI.unescape(k), CGI.unescape(v)]
|
101
|
-
end.sort.map do |k, v|
|
109
|
+
end.sort.map do |k, v| # rubocop:disable Style/MultilineBlockChain
|
102
110
|
"#{uri_escape(k)}=#{uri_escape(v)}"
|
103
111
|
end.join('&')
|
104
112
|
end
|
@@ -172,7 +180,7 @@ module MAuth
|
|
172
180
|
|
173
181
|
def mcc_data
|
174
182
|
mcc_authentication&.match(
|
175
|
-
/\A(#{MAuth::Client::MWSV2_TOKEN}) ([^:]+):([^:]+)#{MAuth::Client::AUTH_HEADER_DELIMITER}\z/
|
183
|
+
/\A(#{MAuth::Client::MWSV2_TOKEN}) ([^:]+):([^:]+)#{MAuth::Client::AUTH_HEADER_DELIMITER}\z/o
|
176
184
|
)
|
177
185
|
end
|
178
186
|
|
data/lib/mauth/version.rb
CHANGED
data/lib/mauth-client.rb
CHANGED
data/lib/rack/mauth.rb
CHANGED
data/mauth-client.gemspec
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
require 'mauth/version'
|
4
6
|
|
@@ -8,33 +10,36 @@ Gem::Specification.new do |spec|
|
|
8
10
|
spec.authors = ['Matthew Szenher', 'Aaron Suggs', 'Geoffrey Ducharme', 'Ethan']
|
9
11
|
spec.email = ['mszenher@mdsol.com']
|
10
12
|
spec.summary = 'Sign and authenticate requests and responses with mAuth authentication.'
|
11
|
-
spec.description = 'Client for signing and authentication of requests and responses with mAuth authentication.
|
13
|
+
spec.description = 'Client for signing and authentication of requests and responses with mAuth authentication. ' \
|
14
|
+
'Includes middleware for Rack and Faraday for incoming and outgoing requests and responses.'
|
12
15
|
spec.homepage = 'https://github.com/mdsol/mauth-client-ruby'
|
13
16
|
spec.license = 'MIT'
|
14
|
-
spec.required_ruby_version = '>= 2.
|
17
|
+
spec.required_ruby_version = '>= 2.6.0'
|
15
18
|
|
16
19
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
20
|
spec.bindir = 'exe'
|
18
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
22
|
spec.require_paths = ['lib']
|
20
23
|
|
21
|
-
spec.add_dependency '
|
22
|
-
spec.add_dependency 'faraday_middleware', '>= 0.9', '< 2.0'
|
23
|
-
spec.add_dependency 'faraday-http-cache', '>= 2.0', '< 3.0'
|
24
|
-
spec.add_dependency 'oj', '~> 3.0'
|
25
|
-
spec.add_dependency 'term-ansicolor', '~> 1.0'
|
24
|
+
spec.add_dependency 'addressable', '~> 2.0'
|
26
25
|
spec.add_dependency 'coderay', '~> 1.0'
|
27
|
-
spec.add_dependency 'rack'
|
28
26
|
spec.add_dependency 'dice_bag', '>= 0.9', '< 2.0'
|
29
|
-
spec.add_dependency '
|
27
|
+
spec.add_dependency 'faraday', '>= 0.9', '< 3.0'
|
28
|
+
spec.add_dependency 'faraday-http-cache', '>= 2.0', '< 3.0'
|
29
|
+
spec.add_dependency 'rack'
|
30
|
+
spec.add_dependency 'term-ansicolor', '~> 1.0'
|
30
31
|
|
31
32
|
spec.add_development_dependency 'appraisal'
|
33
|
+
spec.add_development_dependency 'benchmark-ips', '~> 2.7'
|
32
34
|
spec.add_development_dependency 'bundler', '>= 1.17'
|
33
35
|
spec.add_development_dependency 'byebug'
|
34
36
|
spec.add_development_dependency 'rack-test', '~> 1.1.0'
|
35
37
|
spec.add_development_dependency 'rake', '~> 12.0'
|
36
38
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
39
|
+
spec.add_development_dependency 'rubocop', '= 1.25.1'
|
40
|
+
spec.add_development_dependency 'rubocop-mdsol', '~> 0.1'
|
41
|
+
spec.add_development_dependency 'rubocop-performance', '= 1.13.2'
|
37
42
|
spec.add_development_dependency 'simplecov', '~> 0.16'
|
38
43
|
spec.add_development_dependency 'timecop', '~> 0.9'
|
39
|
-
spec.add_development_dependency '
|
44
|
+
spec.add_development_dependency 'webmock', '~> 3.0'
|
40
45
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mauth-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Szenher
|
@@ -11,30 +11,38 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2022-02-25 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
|
-
name:
|
17
|
+
name: addressable
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- - "
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '0.9'
|
23
|
-
- - "<"
|
20
|
+
- - "~>"
|
24
21
|
- !ruby/object:Gem::Version
|
25
22
|
version: '2.0'
|
26
23
|
type: :runtime
|
27
24
|
prerelease: false
|
28
25
|
version_requirements: !ruby/object:Gem::Requirement
|
29
26
|
requirements:
|
30
|
-
- - "
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0.9'
|
33
|
-
- - "<"
|
27
|
+
- - "~>"
|
34
28
|
- !ruby/object:Gem::Version
|
35
29
|
version: '2.0'
|
36
30
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
31
|
+
name: coderay
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - "~>"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '1.0'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '1.0'
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: dice_bag
|
38
46
|
requirement: !ruby/object:Gem::Requirement
|
39
47
|
requirements:
|
40
48
|
- - ">="
|
@@ -54,12 +62,12 @@ dependencies:
|
|
54
62
|
- !ruby/object:Gem::Version
|
55
63
|
version: '2.0'
|
56
64
|
- !ruby/object:Gem::Dependency
|
57
|
-
name: faraday
|
65
|
+
name: faraday
|
58
66
|
requirement: !ruby/object:Gem::Requirement
|
59
67
|
requirements:
|
60
68
|
- - ">="
|
61
69
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
70
|
+
version: '0.9'
|
63
71
|
- - "<"
|
64
72
|
- !ruby/object:Gem::Version
|
65
73
|
version: '3.0'
|
@@ -69,40 +77,46 @@ dependencies:
|
|
69
77
|
requirements:
|
70
78
|
- - ">="
|
71
79
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
80
|
+
version: '0.9'
|
73
81
|
- - "<"
|
74
82
|
- !ruby/object:Gem::Version
|
75
83
|
version: '3.0'
|
76
84
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
85
|
+
name: faraday-http-cache
|
78
86
|
requirement: !ruby/object:Gem::Requirement
|
79
87
|
requirements:
|
80
|
-
- - "
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '2.0'
|
91
|
+
- - "<"
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '3.0'
|
83
94
|
type: :runtime
|
84
95
|
prerelease: false
|
85
96
|
version_requirements: !ruby/object:Gem::Requirement
|
86
97
|
requirements:
|
87
|
-
- - "
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '2.0'
|
101
|
+
- - "<"
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '3.0'
|
90
104
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
105
|
+
name: rack
|
92
106
|
requirement: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- - "
|
108
|
+
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
110
|
+
version: '0'
|
97
111
|
type: :runtime
|
98
112
|
prerelease: false
|
99
113
|
version_requirements: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
|
-
- - "
|
115
|
+
- - ">="
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
117
|
+
version: '0'
|
104
118
|
- !ruby/object:Gem::Dependency
|
105
|
-
name:
|
119
|
+
name: term-ansicolor
|
106
120
|
requirement: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
@@ -116,13 +130,13 @@ dependencies:
|
|
116
130
|
- !ruby/object:Gem::Version
|
117
131
|
version: '1.0'
|
118
132
|
- !ruby/object:Gem::Dependency
|
119
|
-
name:
|
133
|
+
name: appraisal
|
120
134
|
requirement: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - ">="
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0'
|
125
|
-
type: :
|
139
|
+
type: :development
|
126
140
|
prerelease: false
|
127
141
|
version_requirements: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
@@ -130,53 +144,19 @@ dependencies:
|
|
130
144
|
- !ruby/object:Gem::Version
|
131
145
|
version: '0'
|
132
146
|
- !ruby/object:Gem::Dependency
|
133
|
-
name:
|
134
|
-
requirement: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0.9'
|
139
|
-
- - "<"
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '2.0'
|
142
|
-
type: :runtime
|
143
|
-
prerelease: false
|
144
|
-
version_requirements: !ruby/object:Gem::Requirement
|
145
|
-
requirements:
|
146
|
-
- - ">="
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
version: '0.9'
|
149
|
-
- - "<"
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: '2.0'
|
152
|
-
- !ruby/object:Gem::Dependency
|
153
|
-
name: addressable
|
147
|
+
name: benchmark-ips
|
154
148
|
requirement: !ruby/object:Gem::Requirement
|
155
149
|
requirements:
|
156
150
|
- - "~>"
|
157
151
|
- !ruby/object:Gem::Version
|
158
|
-
version: '2.
|
159
|
-
type: :runtime
|
160
|
-
prerelease: false
|
161
|
-
version_requirements: !ruby/object:Gem::Requirement
|
162
|
-
requirements:
|
163
|
-
- - "~>"
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '2.0'
|
166
|
-
- !ruby/object:Gem::Dependency
|
167
|
-
name: appraisal
|
168
|
-
requirement: !ruby/object:Gem::Requirement
|
169
|
-
requirements:
|
170
|
-
- - ">="
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
version: '0'
|
152
|
+
version: '2.7'
|
173
153
|
type: :development
|
174
154
|
prerelease: false
|
175
155
|
version_requirements: !ruby/object:Gem::Requirement
|
176
156
|
requirements:
|
177
|
-
- - "
|
157
|
+
- - "~>"
|
178
158
|
- !ruby/object:Gem::Version
|
179
|
-
version: '
|
159
|
+
version: '2.7'
|
180
160
|
- !ruby/object:Gem::Dependency
|
181
161
|
name: bundler
|
182
162
|
requirement: !ruby/object:Gem::Requirement
|
@@ -247,6 +227,48 @@ dependencies:
|
|
247
227
|
- - "~>"
|
248
228
|
- !ruby/object:Gem::Version
|
249
229
|
version: '3.8'
|
230
|
+
- !ruby/object:Gem::Dependency
|
231
|
+
name: rubocop
|
232
|
+
requirement: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - '='
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 1.25.1
|
237
|
+
type: :development
|
238
|
+
prerelease: false
|
239
|
+
version_requirements: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - '='
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: 1.25.1
|
244
|
+
- !ruby/object:Gem::Dependency
|
245
|
+
name: rubocop-mdsol
|
246
|
+
requirement: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - "~>"
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0.1'
|
251
|
+
type: :development
|
252
|
+
prerelease: false
|
253
|
+
version_requirements: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - "~>"
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0.1'
|
258
|
+
- !ruby/object:Gem::Dependency
|
259
|
+
name: rubocop-performance
|
260
|
+
requirement: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - '='
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: 1.13.2
|
265
|
+
type: :development
|
266
|
+
prerelease: false
|
267
|
+
version_requirements: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - '='
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: 1.13.2
|
250
272
|
- !ruby/object:Gem::Dependency
|
251
273
|
name: simplecov
|
252
274
|
requirement: !ruby/object:Gem::Requirement
|
@@ -276,19 +298,19 @@ dependencies:
|
|
276
298
|
- !ruby/object:Gem::Version
|
277
299
|
version: '0.9'
|
278
300
|
- !ruby/object:Gem::Dependency
|
279
|
-
name:
|
301
|
+
name: webmock
|
280
302
|
requirement: !ruby/object:Gem::Requirement
|
281
303
|
requirements:
|
282
304
|
- - "~>"
|
283
305
|
- !ruby/object:Gem::Version
|
284
|
-
version: '
|
306
|
+
version: '3.0'
|
285
307
|
type: :development
|
286
308
|
prerelease: false
|
287
309
|
version_requirements: !ruby/object:Gem::Requirement
|
288
310
|
requirements:
|
289
311
|
- - "~>"
|
290
312
|
- !ruby/object:Gem::Version
|
291
|
-
version: '
|
313
|
+
version: '3.0'
|
292
314
|
description: Client for signing and authentication of requests and responses with
|
293
315
|
mAuth authentication. Includes middleware for Rack and Faraday for incoming and
|
294
316
|
outgoing requests and responses.
|
@@ -304,6 +326,8 @@ files:
|
|
304
326
|
- ".gitignore"
|
305
327
|
- ".gitmodules"
|
306
328
|
- ".rspec"
|
329
|
+
- ".rubocop.yml"
|
330
|
+
- ".ruby-version"
|
307
331
|
- ".travis.yml"
|
308
332
|
- ".yardopts"
|
309
333
|
- Appraisals
|
@@ -327,6 +351,7 @@ files:
|
|
327
351
|
- exe/mauth-proxy
|
328
352
|
- gemfiles/faraday_0.x.gemfile
|
329
353
|
- gemfiles/faraday_1.x.gemfile
|
354
|
+
- gemfiles/faraday_2.x.gemfile
|
330
355
|
- lib/mauth-client.rb
|
331
356
|
- lib/mauth/autoload.rb
|
332
357
|
- lib/mauth/client.rb
|
@@ -362,14 +387,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
362
387
|
requirements:
|
363
388
|
- - ">="
|
364
389
|
- !ruby/object:Gem::Version
|
365
|
-
version: 2.
|
390
|
+
version: 2.6.0
|
366
391
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
367
392
|
requirements:
|
368
393
|
- - ">="
|
369
394
|
- !ruby/object:Gem::Version
|
370
395
|
version: '0'
|
371
396
|
requirements: []
|
372
|
-
rubygems_version: 3.
|
397
|
+
rubygems_version: 3.1.2
|
373
398
|
signing_key:
|
374
399
|
specification_version: 4
|
375
400
|
summary: Sign and authenticate requests and responses with mAuth authentication.
|