mauth-client 6.1.0 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: efbde48109b1d067f8901ca07cd13181a3564ef6ed0bce1b3741c8c956765341
4
- data.tar.gz: a28441224938890a0e4538063273705cdda2b7b9efec79149db3929cceb2f6df
3
+ metadata.gz: 3d26cf42f3bc98d5ce98981ee710c52d2b87a9360b6ae54391288182c95fa09a
4
+ data.tar.gz: 03c4a9d0e96187d57232d5a1923935ad5db9c190a891fda410595010bbf1d946
5
5
  SHA512:
6
- metadata.gz: e4afa642e9235c58371b7d42c2ec7c22f8357ce9379a2cb7045d7f9bda5bfd94c83caf8ba4eaa172926429d383d7956a35cd41bc0a79324eccf1123ed25d5642
7
- data.tar.gz: d238221c9a124d45a33136c930346d6999bf2e0d8492f16ab4bf94090b67b6e149a4dde8388af1f479f3a21f5b723374b6b95b571add51f179b93cc6a8590b91
6
+ metadata.gz: 58751eb9040426589a0274390307abfc518c1465372c6b26329debb25a12c06fb63e96fccd4093fd45e90bd24fefd6c64966160b6520513515cd5dc9ac96f804
7
+ data.tar.gz: 0febdd455262d240d5f456acc00785d8a0941627ca352ffa559526ddadbaab726213b87e24eaa8f576c430b0a856725224ed48909cdc64cf9ce6b3a77b8c4acf
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "spec/fixtures/mauth-protocol-test-suite"]
2
+ path = spec/fixtures/mauth-protocol-test-suite
3
+ url = https://github.com/mdsol/mauth-protocol-test-suite.git
data/.rspec CHANGED
@@ -1,2 +1 @@
1
1
  --color
2
- --tag ~protocol_suite
data/.travis.yml CHANGED
@@ -1,12 +1,17 @@
1
+ dist: focal
1
2
  language: ruby
2
3
  cache: bundler
3
4
 
4
5
  rvm:
5
- - 2.3
6
- - 2.4
7
6
  - 2.5
8
7
  - 2.6
9
8
  - 2.7
9
+ - 3.0
10
+
11
+ jobs:
12
+ exclude:
13
+ - rvm: 3.0
14
+ gemfile: gemfiles/faraday_0.x.gemfile # Faraday v0.x does not officially support Ruby 3.0 (see: https://github.com/lostisland/faraday/releases/tag/v1.3.0)
10
15
 
11
16
  gemfile:
12
17
  - gemfiles/faraday_0.x.gemfile
@@ -14,28 +19,29 @@ gemfile:
14
19
 
15
20
  before_install:
16
21
  - gem update --system --force -N > /dev/null && echo "Rubygems version $(gem --version)"
17
- - gem install bundler --force -N -v=2.1.4 && bundle --version
22
+ - gem install bundler --force -N && bundle --version
18
23
 
19
24
  install:
20
25
  - bundle install --jobs=3 --retry=3
21
26
  - >-
22
27
  curl -H 'Cache-Control: no-cache'
23
- https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/master/travis_ci/fossa_install.sh |
28
+ https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/main/travis_ci/fossa_install.sh |
24
29
  bash -s -- -b $TRAVIS_BUILD_DIR
25
30
 
26
31
  script:
27
32
  - bundle exec rspec
33
+ - bundle exec rake benchmark
28
34
  - >-
29
35
  curl -H 'Cache-Control: no-cache'
30
- https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/master/travis_ci/fossa_run.sh |
36
+ https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/main/travis_ci/fossa_run.sh |
31
37
  bash -s -- -b $TRAVIS_BUILD_DIR
32
38
 
33
39
  deploy:
34
40
  provider: rubygems
35
41
  gem: mauth-client
36
42
  api_key:
37
- secure: J0aPDp4+Ev2L+ZDcgpF+hAG95S4IsD6pCiDRxDWnrk79P5hq1rXoD3S39ANyqtQEQqkoVjsgoSP5JLi420aL2lYj7mhvaEOty9fK+flwUhI4nw+Gztm7EKNDNX8WKvk4fl4Zc7noIeI0uyes867hDjRQfyYvUuma7aK5H9NWzNUV9Q+KrVAoneVDGnNydxwkuuIpOFdjbVQgNpxVhVBV7Q4OLsB1KtWB9lptMwhqnyqZKex7JZ+37sojaj3oVT5ijrnAm+bR1QO1hGIOwuBako2iz+MBZHPccM4BEFsZme/7olypxv0JfeCuhqDnH1VWIFh6IZRDeLnZuX3qOhkdx4HLwxB//5O5+iapK0wh1zbnLvXqkE1dalUHyaZzStKH9xchIWl5I77Ica232OJYrpj9hhroae0p3VARF0IoZceKaH8NnMpq+nBAW4REcWrqPpe9xkRLDTNibkpaAy08vGOF2kPZkWw4lfkVBM1+wjY2xDn6wJ7VgQ1BeosbeTXbmny2TUeI22beihn894tzpCPPHiTRvKu0lV3jBfeoOAXzE333PrGm3zF9MDhg+1/iBwXVhdoOwEwBPQ/3Hu37xJn0AfRneni4StYnIkZ1Ur9Vub03J/3C3Aw6it99rQSWvC+2PzHqQhsG22VprvxlozFe1jFzdqKgvDkbkn44ltI=
43
+ secure: QDp0P/lMGLYc4+A3M6VD9y551X6GrGwOSBE6xSG4lE6mPXoSISK5Yj18vNWQRQuQ4BsE6CdfZ/xsPjSRDda6b+yUQbgisjJ+Ry6jUVE1v9UKTZ0VHgHyXcsaJFC29tBKBeuGCj0AD5qhbTO1+ybeZSUfdSeVVoidD4W/bSnvzlT1Lht7IE8jbHbR57LsJKoEaDxKu33dg4CYV96xrlYGxHAS2UgEgi5Ve3ohzBWkX9RWF/wWoGCzIYhJBzXgCEEFw8iWkspjTePgv9yjD2HIMtF44aiSTHM5iqBBsYJ7A8+kUwoq7+srsashHZ1wZz1YulsCSkjwM9AXZ4E0f9AnERw/RQ5gG7bCuHZtSG9g/0SWBQeNfkAF3An6eTSS24KVfnarGdH2bk0G28k2oP26MWiDKz8nlQxNAY4rH+dITael18bgf45H4KccQqiooBEGnuYpUAuIPB+1l+BsIcRQnrU3LDtmtZn0KrCHHJ7EHOdogOG+/Pxof8ht1xF7V+HYhhzSRJs2JkvmZsp4q2T7W6b6kfi59Cz3LpqA1HHYcL5/OFZeLA/TlCNke0CRMxG8k3udDKj50jqFATXEa8lNyGLjmWh7tL9Bb/uy+CU47qUdx+V4K+kheAvNFtHfpxmyUGJSY0FH02H1VBPWm10DZ7kH+6jgCKyXuql+yWDw62s=
38
44
  on:
39
45
  tags: true
40
46
  repo: mdsol/mauth-client-ruby
41
- condition: $TRAVIS_RUBY_VERSION == 2.7 && $BUNDLE_GEMFILE == $TRAVIS_BUILD_DIR/gemfiles/faraday_1.x.gemfile
47
+ condition: $TRAVIS_RUBY_VERSION == 3.0 && $BUNDLE_GEMFILE == $TRAVIS_BUILD_DIR/gemfiles/faraday_1.x.gemfile
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
+ ## v6.3.0
2
+ - Support Ruby 3.0.
3
+ - Drop support for Ruby < 2.5.0.
4
+
5
+ ## v6.2.1
6
+ - Fix SecurityTokenCacher to not cache tokens forever.
7
+
8
+ ## v6.2.0
9
+ - Drop legacy security token expiry in favor of honoring server cache headers via Faraday HTTP Cache Middleware.
10
+
11
+ ## v6.1.1
12
+ - Replace `URI.escape` with `CGI.escape` in SecurityTokenCacher to suppress "URI.escape is obsolete" warning.
13
+
1
14
  ## v6.1.0
2
- * Allow Faraday 1.x.
15
+ - Allow Faraday 1.x.
3
16
 
4
17
  ## v6.0.0
5
18
  - Added parsing code to test with mauth-protocol-test-suite.
data/CONTRIBUTING.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Contributing
2
2
 
3
+ ## Cloning the Repo
4
+
5
+ This repo contains the submodule `mauth-protocol-test-suite` so requires a flag when initially cloning in order to clone and init submodules.
6
+
7
+ ```
8
+ git clone --recurse-submodules git@github.com:mdsol/mauth-client-ruby.git
9
+ ```
10
+
11
+ If you have already cloned a version of this repo before the submodule was introduced in version 6.1.2 then run
12
+
13
+ ```
14
+ cd spec/fixtures/mauth-protocol-test-suite
15
+ git submodule update --init
16
+ ```
17
+
18
+ to init the submodule.
19
+
3
20
  ## General Information
4
21
 
5
22
  * Check out the latest develop to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
@@ -19,14 +36,6 @@ Next, run the tests:
19
36
  bundle exec rspec
20
37
  ```
21
38
 
22
- # Running mauth-protocol-test-suite
23
-
24
- To run the mauth-protocol-test-suite clone the latest test suite onto your machine and place it in the same parent directory as this repo (or supply the ENV var `TEST_SUITE_RELATIVE_PATH` with the path to the test suite relative to this repo). Then run:
25
-
26
- ```
27
- bundle exec rspec --tag protocol_suite
28
- ```
29
-
30
39
  ## Running Benchmark
31
40
 
32
41
  If you make changes which could affect performance, please run the benchmark before and after the change as a sanity check.
@@ -4,8 +4,7 @@
4
4
  - Clojure: [clojure-mauth-client](https://github.com/mdsol/clojure-mauth-client)
5
5
  - Go: [go-mauth-client](https://github.com/mdsol/go-mauth-client)
6
6
  - Java: [mauth-jvm-clients](https://github.com/mdsol/mauth-jvm-clients)
7
- - Python:
8
- - [requests-mauth](https://github.com/mdsol/requests-mauth)
9
- - [flask-mauth](https://github.com/mdsol/flask-mauth)
7
+ - Python: [mauth-client-python](https://github.com/mdsol/mauth-client-python)
10
8
  - R: [RMauthClient](https://github.com/mdsol/RMauthClient)
11
9
  - Ruby: [mauth-client-ruby](https://github.com/mdsol/mauth-client-ruby)
10
+ - Rust: [mauth-client-rust](https://github.com/mdsol/mauth-client-rust)
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- mauth-client (6.1.0)
4
+ mauth-client (6.3.0)
5
5
  addressable (~> 2.0)
6
6
  coderay (~> 1.0)
7
7
  dice_bag (>= 0.9, < 2.0)
8
8
  faraday (>= 0.9, < 2.0)
9
+ faraday-http-cache (>= 2.0, < 3.0)
9
10
  faraday_middleware (>= 0.9, < 2.0)
10
11
  rack
11
12
  term-ansicolor (~> 1.0)
@@ -13,27 +14,47 @@ PATH
13
14
  GEM
14
15
  remote: https://rubygems.org/
15
16
  specs:
16
- addressable (2.7.0)
17
+ addressable (2.8.0)
17
18
  public_suffix (>= 2.0.2, < 5.0)
18
19
  coderay (1.1.3)
19
- dice_bag (1.4.1)
20
+ dice_bag (1.6.0)
20
21
  diff-lcs (~> 1.0)
21
22
  rake
22
23
  thor (< 2.0)
23
24
  diff-lcs (1.4.4)
24
- faraday (1.0.1)
25
+ faraday (1.8.0)
26
+ faraday-em_http (~> 1.0)
27
+ faraday-em_synchrony (~> 1.0)
28
+ faraday-excon (~> 1.1)
29
+ faraday-httpclient (~> 1.0.1)
30
+ faraday-net_http (~> 1.0)
31
+ faraday-net_http_persistent (~> 1.1)
32
+ faraday-patron (~> 1.0)
33
+ faraday-rack (~> 1.0)
25
34
  multipart-post (>= 1.2, < 3)
26
- faraday_middleware (1.0.0)
35
+ ruby2_keywords (>= 0.0.4)
36
+ faraday-em_http (1.0.0)
37
+ faraday-em_synchrony (1.0.0)
38
+ faraday-excon (1.1.0)
39
+ faraday-http-cache (2.2.0)
40
+ faraday (>= 0.8)
41
+ faraday-httpclient (1.0.1)
42
+ faraday-net_http (1.0.1)
43
+ faraday-net_http_persistent (1.2.0)
44
+ faraday-patron (1.0.0)
45
+ faraday-rack (1.0.0)
46
+ faraday_middleware (1.2.0)
27
47
  faraday (~> 1.0)
28
48
  multipart-post (2.1.1)
29
49
  public_suffix (4.0.6)
30
50
  rack (2.2.3)
31
- rake (13.0.1)
51
+ rake (13.0.6)
52
+ ruby2_keywords (0.0.5)
32
53
  sync (0.5.0)
33
54
  term-ansicolor (1.7.1)
34
55
  tins (~> 1.0)
35
- thor (1.0.1)
36
- tins (1.25.0)
56
+ thor (1.1.0)
57
+ tins (1.29.1)
37
58
  sync
38
59
 
39
60
  PLATFORMS
@@ -44,4 +65,4 @@ DEPENDENCIES
44
65
  mauth-client!
45
66
 
46
67
  BUNDLED WITH
47
- 2.1.4
68
+ 2.2.29
@@ -53,7 +53,7 @@ module MAuth
53
53
  end
54
54
 
55
55
  def verify_signature_v1!(actual, expected_str_to_sign)
56
- actual == Digest::SHA512.hexdigest(expected_str_to_sign)
56
+ actual == OpenSSL::Digest::SHA512.hexdigest(expected_str_to_sign)
57
57
  end
58
58
 
59
59
  def signature_valid_v2!(object)
@@ -1,68 +1,63 @@
1
+ require 'faraday-http-cache'
2
+ require 'mauth/faraday'
3
+
1
4
  module MAuth
2
5
  class Client
3
6
  module LocalAuthenticator
4
7
  class SecurityTokenCacher
5
8
 
6
- class ExpirableSecurityToken < Struct.new(:security_token, :create_time)
7
- CACHE_LIFE = 60
8
- def expired?
9
- create_time + CACHE_LIFE < Time.now
10
- end
11
- end
12
-
13
9
  def initialize(mauth_client)
14
10
  @mauth_client = mauth_client
15
11
  # TODO: should this be UnableToSignError?
16
- @mauth_client.assert_private_key(UnableToAuthenticateError.new("Cannot fetch public keys from mAuth service without a private key!"))
17
- @cache = {}
18
- require 'thread'
19
- @cache_write_lock = Mutex.new
12
+ @mauth_client.assert_private_key(
13
+ UnableToAuthenticateError.new("Cannot fetch public keys from mAuth service without a private key!")
14
+ )
20
15
  end
21
16
 
22
17
  def get(app_uuid)
23
- if !@cache[app_uuid] || @cache[app_uuid].expired?
24
- # url-encode the app_uuid to prevent trickery like escaping upward with ../../ in a malicious
25
- # app_uuid - probably not exploitable, but this is the right way to do it anyway.
26
- # use UNRESERVED instead of UNSAFE (the default) as UNSAFE doesn't include /
27
- url_encoded_app_uuid = URI.escape(app_uuid, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
28
- begin
29
- response = signed_mauth_connection.get("/mauth/#{@mauth_client.mauth_api_version}/security_tokens/#{url_encoded_app_uuid}.json")
30
- rescue ::Faraday::ConnectionFailed, ::Faraday::TimeoutError => e
31
- msg = "mAuth service did not respond; received #{e.class}: #{e.message}"
32
- @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
33
- raise UnableToAuthenticateError, msg
34
- end
35
- if response.status == 200
36
- begin
37
- security_token = JSON.parse(response.body)
38
- rescue JSON::ParserError => e
39
- msg = "mAuth service responded with unparseable json: #{response.body}\n#{e.class}: #{e.message}"
40
- @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
41
- raise UnableToAuthenticateError, msg
42
- end
43
- @cache_write_lock.synchronize do
44
- @cache[app_uuid] = ExpirableSecurityToken.new(security_token, Time.now)
45
- end
46
- elsif response.status == 404
47
- # signing with a key mAuth doesn't know about is considered inauthentic
48
- raise InauthenticError, "mAuth service responded with 404 looking up public key for #{app_uuid}"
49
- else
50
- @mauth_client.send(:mauth_service_response_error, response)
51
- end
18
+ # url-encode the app_uuid to prevent trickery like escaping upward with ../../ in a malicious
19
+ # app_uuid - probably not exploitable, but this is the right way to do it anyway.
20
+ url_encoded_app_uuid = CGI.escape(app_uuid)
21
+ path = "/mauth/#{@mauth_client.mauth_api_version}/security_tokens/#{url_encoded_app_uuid}.json"
22
+ response = signed_mauth_connection.get(path)
23
+
24
+ case response.status
25
+ when 200
26
+ security_token_from(response.body)
27
+ when 404
28
+ # signing with a key mAuth doesn't know about is considered inauthentic
29
+ raise InauthenticError, "mAuth service responded with 404 looking up public key for #{app_uuid}"
30
+ else
31
+ @mauth_client.send(:mauth_service_response_error, response)
52
32
  end
53
- @cache[app_uuid].security_token
33
+ rescue ::Faraday::ConnectionFailed, ::Faraday::TimeoutError => e
34
+ msg = "mAuth service did not respond; received #{e.class}: #{e.message}"
35
+ @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
36
+ raise UnableToAuthenticateError, msg
54
37
  end
55
38
 
56
39
  private
57
40
 
41
+ def security_token_from(response_body)
42
+ JSON.parse response_body
43
+ rescue JSON::ParserError => e
44
+ msg = "mAuth service responded with unparseable json: #{response_body}\n#{e.class}: #{e.message}"
45
+ @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
46
+ raise UnableToAuthenticateError, msg
47
+ end
48
+
58
49
  def signed_mauth_connection
59
- require 'faraday'
60
- require 'mauth/faraday'
61
- @mauth_client.faraday_options[:ssl] = { ca_path: @mauth_client.ssl_certs_path } if @mauth_client.ssl_certs_path
62
- @signed_mauth_connection ||= ::Faraday.new(@mauth_client.mauth_baseurl, @mauth_client.faraday_options) do |builder|
63
- builder.use MAuth::Faraday::MAuthClientUserAgent
64
- builder.use MAuth::Faraday::RequestSigner, 'mauth_client' => @mauth_client
65
- builder.adapter ::Faraday.default_adapter
50
+ @signed_mauth_connection ||= begin
51
+ if @mauth_client.ssl_certs_path
52
+ @mauth_client.faraday_options[:ssl] = { ca_path: @mauth_client.ssl_certs_path }
53
+ end
54
+
55
+ ::Faraday.new(@mauth_client.mauth_baseurl, @mauth_client.faraday_options) do |builder|
56
+ builder.use MAuth::Faraday::MAuthClientUserAgent
57
+ builder.use MAuth::Faraday::RequestSigner, 'mauth_client' => @mauth_client
58
+ builder.use :http_cache, logger: MAuth::Client.new.logger, shared_cache: false
59
+ builder.adapter ::Faraday.default_adapter
60
+ end
66
61
  end
67
62
  end
68
63
  end
@@ -56,7 +56,7 @@ module MAuth
56
56
 
57
57
  def signature_v1(string_to_sign)
58
58
  assert_private_key(UNABLE_TO_SIGN_ERR)
59
- hashed_string_to_sign = Digest::SHA512.hexdigest(string_to_sign)
59
+ hashed_string_to_sign = OpenSSL::Digest::SHA512.hexdigest(string_to_sign)
60
60
  Base64.encode64(private_key.private_encrypt(hashed_string_to_sign)).delete("\n")
61
61
  end
62
62
 
@@ -1,4 +1,4 @@
1
- require 'digest'
1
+ require 'openssl'
2
2
  require 'addressable'
3
3
 
4
4
  module MAuth
@@ -61,7 +61,7 @@ module MAuth
61
61
  # memoization of body_digest to avoid hashing three times when we call
62
62
  # string_to_sign_v2 three times in client#signature_valid_v2!
63
63
  # note that if :body is nil we hash an empty string ('')
64
- attrs_with_overrides[:body_digest] ||= Digest::SHA512.hexdigest(attrs_with_overrides[:body] || '')
64
+ attrs_with_overrides[:body_digest] ||= OpenSSL::Digest::SHA512.hexdigest(attrs_with_overrides[:body] || '')
65
65
  attrs_with_overrides[:encoded_query_params] = unescape_encode_query_string(attrs_with_overrides[:query_string] || '')
66
66
  attrs_with_overrides[:request_url] = normalize_path(attrs_with_overrides[:request_url])
67
67
 
data/lib/mauth/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MAuth
4
- VERSION = '6.1.0'
4
+ VERSION = '6.3.0'
5
5
  end
data/mauth-client.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.description = 'Client for signing and authentication of requests and responses with mAuth authentication. Includes middleware for Rack and Faraday for incoming and outgoing requests and responses.'
12
12
  spec.homepage = 'https://github.com/mdsol/mauth-client-ruby'
13
13
  spec.license = 'MIT'
14
- spec.required_ruby_version = '>= 2.3.0'
14
+ spec.required_ruby_version = '>= 2.5.0'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
17
  spec.bindir = 'exe'
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'faraday', '>= 0.9', '< 2.0'
22
22
  spec.add_dependency 'faraday_middleware', '>= 0.9', '< 2.0'
23
+ spec.add_dependency 'faraday-http-cache', '>= 2.0', '< 3.0'
23
24
  spec.add_dependency 'term-ansicolor', '~> 1.0'
24
25
  spec.add_dependency 'coderay', '~> 1.0'
25
26
  spec.add_dependency 'rack'
@@ -35,4 +36,5 @@ Gem::Specification.new do |spec|
35
36
  spec.add_development_dependency 'simplecov', '~> 0.16'
36
37
  spec.add_development_dependency 'timecop', '~> 0.9'
37
38
  spec.add_development_dependency 'benchmark-ips', '~> 2.7'
39
+ spec.add_development_dependency 'webmock', '~> 3.0'
38
40
  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.1.0
4
+ version: 6.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Szenher
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2020-09-10 00:00:00.000000000 Z
14
+ date: 2021-10-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: faraday
@@ -53,6 +53,26 @@ dependencies:
53
53
  - - "<"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '2.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: faraday-http-cache
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '2.0'
63
+ - - "<"
64
+ - !ruby/object:Gem::Version
65
+ version: '3.0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '2.0'
73
+ - - "<"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
56
76
  - !ruby/object:Gem::Dependency
57
77
  name: term-ansicolor
58
78
  requirement: !ruby/object:Gem::Requirement
@@ -255,6 +275,20 @@ dependencies:
255
275
  - - "~>"
256
276
  - !ruby/object:Gem::Version
257
277
  version: '2.7'
278
+ - !ruby/object:Gem::Dependency
279
+ name: webmock
280
+ requirement: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '3.0'
285
+ type: :development
286
+ prerelease: false
287
+ version_requirements: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: '3.0'
258
292
  description: Client for signing and authentication of requests and responses with
259
293
  mAuth authentication. Includes middleware for Rack and Faraday for incoming and
260
294
  outgoing requests and responses.
@@ -268,6 +302,7 @@ extra_rdoc_files: []
268
302
  files:
269
303
  - ".fossa.yml"
270
304
  - ".gitignore"
305
+ - ".gitmodules"
271
306
  - ".rspec"
272
307
  - ".travis.yml"
273
308
  - ".yardopts"
@@ -327,14 +362,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
327
362
  requirements:
328
363
  - - ">="
329
364
  - !ruby/object:Gem::Version
330
- version: 2.3.0
365
+ version: 2.5.0
331
366
  required_rubygems_version: !ruby/object:Gem::Requirement
332
367
  requirements:
333
368
  - - ">="
334
369
  - !ruby/object:Gem::Version
335
370
  version: '0'
336
371
  requirements: []
337
- rubygems_version: 3.0.8
372
+ rubygems_version: 3.1.2
338
373
  signing_key:
339
374
  specification_version: 4
340
375
  summary: Sign and authenticate requests and responses with mAuth authentication.