mauth-client 4.0.2 → 4.2.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
- SHA1:
3
- metadata.gz: a21d16b8275a278bf76abd03b2a36c59789ef493
4
- data.tar.gz: a2a371bfe255763a721f2cc3566865d86264e17d
2
+ SHA256:
3
+ metadata.gz: 2e197a763a48eeb58d88be12eab10dc6e2c7c104287b0371a41120bd920402db
4
+ data.tar.gz: 84ef6da779ededf897bfe7a44eb2581073c2404a1208ae3a233b2d84c1bc98eb
5
5
  SHA512:
6
- metadata.gz: 3a9f889083c41d625ce4783f903b4edb94aefa7ea294aed7b6d1f3b9b6b2cf8d9d65121c3976c0bcb3903b9537bc5f615a09891177151a0734da5f333183a0f2
7
- data.tar.gz: 4be1f2f77de4305c4b3bdb3dddf64655233b5a9a1779e03fa1b245666c464001acad2b1a4c800edbd5a6d9e3ecc30b03a0e2892729db4e6573b9d782e687bd08
6
+ metadata.gz: f640994364eee25edcbbf611a611eb539efc96432de37daf78c0211f83e966154c5dcfb321fff6e25e067fdb53faae6af792665897a7ae4d295beada833282d2
7
+ data.tar.gz: 6270a48e063208842a1055d39814b96fe2cb4b8ceea04592eb94c62b533f110fe5510ca9060f321d5f4a309b96aaf9c99489ff28e068e5ddd6c04e20c1ae9bab
data/.fossa.yml ADDED
@@ -0,0 +1,14 @@
1
+ # Generated by FOSSA CLI (https://github.com/fossas/fossa-cli)
2
+ # Visit https://fossa.io to learn more
3
+
4
+ version: 1
5
+ cli:
6
+ server: https://app.fossa.io
7
+ fetcher: custom
8
+ project: mauth-client-ruby
9
+ analyze:
10
+ modules:
11
+ - name: Gemfile
12
+ type: gem
13
+ target: .
14
+ path: .
data/.gitignore CHANGED
@@ -1,6 +1,7 @@
1
1
  .bundle
2
2
  .yardoc
3
3
 
4
+ /config
4
5
  /coverage
5
6
  /yardoc
6
7
  /log
data/.travis.yml CHANGED
@@ -1,17 +1,32 @@
1
1
  language: ruby
2
2
  cache: bundler
3
- sudo: false
4
3
 
5
4
  rvm:
6
- - 2.2.5
7
- - 2.3.1
5
+ - 2.3.8
6
+ - 2.4.6
7
+ - 2.5.5
8
+ - 2.6.3
8
9
 
9
- env:
10
- - MAUTH_CONFIG_YML=`pwd`/spec/config_root/config/mauth.yml
10
+ before_install:
11
+ - gem update --system -N > /dev/null && echo "Rubygems version $(gem --version)"
12
+ - gem install bundler --force -N -v=2.0.1 && bundle --version
11
13
 
12
- matrix:
13
- include:
14
- - rvm: 2.1.10
15
- gemfile: gemfiles/ruby_2.1.gemfile
14
+ install:
15
+ - bundle install --jobs=3 --retry=3
16
+ - |-
17
+ curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/master/travis_ci/fossa_install.sh | bash -s -- -b $TRAVIS_BUILD_DIR
16
18
 
17
- script: "bundle exec rspec"
19
+ script:
20
+ - bundle exec rspec
21
+ - |-
22
+ curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/master/travis_ci/fossa_run.sh | bash -s -- -b $TRAVIS_BUILD_DIR
23
+
24
+ deploy:
25
+ provider: rubygems
26
+ gem: mauth-client
27
+ api_key:
28
+ secure: J0aPDp4+Ev2L+ZDcgpF+hAG95S4IsD6pCiDRxDWnrk79P5hq1rXoD3S39ANyqtQEQqkoVjsgoSP5JLi420aL2lYj7mhvaEOty9fK+flwUhI4nw+Gztm7EKNDNX8WKvk4fl4Zc7noIeI0uyes867hDjRQfyYvUuma7aK5H9NWzNUV9Q+KrVAoneVDGnNydxwkuuIpOFdjbVQgNpxVhVBV7Q4OLsB1KtWB9lptMwhqnyqZKex7JZ+37sojaj3oVT5ijrnAm+bR1QO1hGIOwuBako2iz+MBZHPccM4BEFsZme/7olypxv0JfeCuhqDnH1VWIFh6IZRDeLnZuX3qOhkdx4HLwxB//5O5+iapK0wh1zbnLvXqkE1dalUHyaZzStKH9xchIWl5I77Ica232OJYrpj9hhroae0p3VARF0IoZceKaH8NnMpq+nBAW4REcWrqPpe9xkRLDTNibkpaAy08vGOF2kPZkWw4lfkVBM1+wjY2xDn6wJ7VgQ1BeosbeTXbmny2TUeI22beihn894tzpCPPHiTRvKu0lV3jBfeoOAXzE333PrGm3zF9MDhg+1/iBwXVhdoOwEwBPQ/3Hu37xJn0AfRneni4StYnIkZ1Ur9Vub03J/3C3Aw6it99rQSWvC+2PzHqQhsG22VprvxlozFe1jFzdqKgvDkbkn44ltI=
29
+ on:
30
+ tags: true
31
+ repo: mdsol/mauth-client-ruby
32
+ condition: "$TRAVIS_RUBY_VERSION == 2.6.3"
data/CHANGELOG.md CHANGED
@@ -1,4 +1,18 @@
1
- # MAuth-Client History
1
+ ## v4.2.0
2
+ * Drop legacy security token expiry in favor of honoring server cache headers via Faraday HTTP Cache Middleware.
3
+
4
+ ## v4.1.1
5
+ - Use warning level instead of error level for logs about missing mauth header.
6
+
7
+ ## v4.1.0
8
+ - Drop support for Ruby < 2.3.0
9
+ - Update development dependencies
10
+
11
+ ## v4.0.4
12
+ - Restore original behavior in the proxy of forwarding of headers that begin with HTTP_ (except for HTTP_HOST) but removing the HTTP_.
13
+
14
+ ## v4.0.3
15
+ - Updated signature to decode number sign (#) in requests
2
16
 
3
17
  ## v4.0.2
4
18
  - Store the config data to not load the config file multiple times
data/CONTRIBUTING.md CHANGED
@@ -13,8 +13,8 @@
13
13
 
14
14
  To run tests, first run `bundle install`.
15
15
 
16
- Next, run the tests with an appropriate mauth config file, typically this is done by passing the provided one using an environment variable:
16
+ Next, run the tests:
17
17
 
18
18
  ```
19
- MAUTH_CONFIG_YML=`pwd`/spec/config_root/config/mauth.yml bundle exec rspec
19
+ bundle exec rspec
20
20
  ```
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # MAuth Client
2
- [![Build Status](https://travis-ci.org/mdsol/mauth-client-ruby.svg)](https://travis-ci.org/mdsol/mauth-client-ruby)
2
+ [![Build Status](https://travis-ci.org/mdsol/mauth-client-ruby.svg?branch=master)](https://travis-ci.org/mdsol/mauth-client-ruby)
3
3
 
4
4
  This gem consists of MAuth::Client, a class to manage the information needed to both sign and authenticate requests
5
5
  and responses, and middlewares for Rack and Faraday which leverage the client's capabilities.
data/Rakefile CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
- require 'kender/tasks'
4
3
 
5
4
  RSpec::Core::RakeTask.new(:spec)
6
5
 
@@ -1,6 +1,11 @@
1
- # MAuth-Client implementations
1
+ # MAuth client implementations
2
2
 
3
3
  - .Net: [mauth-client-dotnet](https://github.com/mdsol/mauth-client-dotnet)
4
- - Go (golang): [go-mauth-client](https://github.com/mdsol/go-mauth-client)
4
+ - Clojure: [clojure-mauth-client](https://github.com/mdsol/clojure-mauth-client)
5
+ - Go: [go-mauth-client](https://github.com/mdsol/go-mauth-client)
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)
5
10
  - R: [RMauthClient](https://github.com/mdsol/RMauthClient)
6
11
  - Ruby: [mauth-client-ruby](https://github.com/mdsol/mauth-client-ruby)
data/examples/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'faraday', '~> 0.9.0'
3
+ gem 'faraday', '~> 0.15'
4
4
  gem 'mauth-client', path: '..'
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- mauth-client (3.1.4)
4
+ mauth-client (4.1.0)
5
5
  coderay (~> 1.0)
6
6
  dice_bag (>= 0.9, < 2.0)
7
7
  faraday (~> 0.7)
@@ -12,30 +12,30 @@ PATH
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- coderay (1.1.1)
16
- dice_bag (1.1.1)
15
+ coderay (1.1.2)
16
+ dice_bag (1.3.1)
17
17
  diff-lcs (~> 1.0)
18
18
  rake
19
19
  thor (~> 0.0)
20
- diff-lcs (1.2.5)
21
- faraday (0.9.2)
20
+ diff-lcs (1.3)
21
+ faraday (0.15.3)
22
22
  multipart-post (>= 1.2, < 3)
23
- faraday_middleware (0.10.0)
24
- faraday (>= 0.7.4, < 0.10)
23
+ faraday_middleware (0.12.2)
24
+ faraday (>= 0.7.4, < 1.0)
25
25
  multipart-post (2.0.0)
26
- rack (2.0.1)
27
- rake (11.2.2)
28
- term-ansicolor (1.3.2)
26
+ rack (2.0.6)
27
+ rake (12.3.1)
28
+ term-ansicolor (1.7.0)
29
29
  tins (~> 1.0)
30
- thor (0.19.1)
31
- tins (1.11.0)
30
+ thor (0.20.3)
31
+ tins (1.20.2)
32
32
 
33
33
  PLATFORMS
34
34
  ruby
35
35
 
36
36
  DEPENDENCIES
37
- faraday (~> 0.9.0)
37
+ faraday (~> 0.15)
38
38
  mauth-client!
39
39
 
40
40
  BUNDLED WITH
41
- 1.12.5
41
+ 1.17.1
data/lib/mauth/client.rb CHANGED
@@ -7,6 +7,8 @@ require 'mauth/core_ext'
7
7
  require 'mauth/autoload'
8
8
  require 'mauth/dice_bag/mauth_templates'
9
9
  require 'mauth/version'
10
+ require 'faraday-http-cache'
11
+ require 'oj'
10
12
 
11
13
  module MAuth
12
14
  class Client
@@ -116,6 +118,11 @@ module MAuth
116
118
  class InauthenticError < StandardError
117
119
  end
118
120
 
121
+ # Used when the incoming request does not contain any mAuth related information
122
+ class MauthNotPresent < StandardError
123
+ end
124
+
125
+
119
126
  # required information for signing was missing
120
127
  class UnableToSignError < StandardError
121
128
  end
@@ -288,7 +295,7 @@ module MAuth
288
295
  begin
289
296
  authenticate!(object)
290
297
  true
291
- rescue InauthenticError
298
+ rescue InauthenticError, MauthNotPresent
292
299
  false
293
300
  end
294
301
  end
@@ -299,13 +306,14 @@ module MAuth
299
306
  time_valid!(object)
300
307
  token_valid!(object)
301
308
  signature_valid!(object)
302
- rescue InauthenticError
303
- logger.error "mAuth signature authentication failed for #{object.class}. encountered error:"
304
- $!.message.split("\n").each { |l| logger.error "\t#{l}" }
309
+ rescue MauthNotPresent => e
310
+ logger.warn "mAuth signature not present on #{object.class}. Exception: #{e.message}"
311
+ raise
312
+ rescue InauthenticError => e
313
+ logger.error "mAuth signature authentication failed for #{object.class}. Exception: #{e.message}"
305
314
  raise
306
- rescue UnableToAuthenticateError
307
- logger.error "Unable to authenticate with MAuth. encountered error:"
308
- $!.message.split("\n").each { |l| logger.error "\t#{l}" }
315
+ rescue UnableToAuthenticateError => e
316
+ logger.error "Unable to authenticate with MAuth for #{object.class}. Exception: #{e.message}"
309
317
  raise
310
318
  end
311
319
 
@@ -315,27 +323,25 @@ module MAuth
315
323
  def log_authentication_request(object)
316
324
  object_app_uuid = object.signature_app_uuid || '[none provided]'
317
325
  logger.info "Mauth-client attempting to authenticate request from app with mauth app uuid #{object_app_uuid} to app with mauth app uuid #{client_app_uuid}."
318
- rescue # don't let a failed attempt to log disrupt the rest of the action
319
- logger.error "Mauth-client failed to log information about its attempts to authenticate the current request because #{$!}"
320
326
  end
321
327
 
322
328
  def authentication_present!(object)
323
329
  if object.x_mws_authentication.nil? || object.x_mws_authentication !~ /\S/
324
- raise InauthenticError, "Authentication Failed. No mAuth signature present; X-MWS-Authentication header is blank."
330
+ raise MauthNotPresent, "Authentication Failed. No mAuth signature present; X-MWS-Authentication header is blank."
325
331
  end
326
332
  end
327
333
 
328
334
  def time_valid!(object, now = Time.now)
329
335
  if object.x_mws_time.nil?
330
- raise InauthenticError, "Time verification failed for #{object.class}. No x-mws-time present."
336
+ raise InauthenticError, "Time verification failed. No x-mws-time present."
331
337
  elsif !(-ALLOWED_DRIFT_SECONDS..ALLOWED_DRIFT_SECONDS).cover?(now.to_i - object.x_mws_time.to_i)
332
- raise InauthenticError, "Time verification failed for #{object.class}. #{object.x_mws_time} not within #{ALLOWED_DRIFT_SECONDS} of #{now}"
338
+ raise InauthenticError, "Time verification failed. #{object.x_mws_time} not within #{ALLOWED_DRIFT_SECONDS} of #{now}"
333
339
  end
334
340
  end
335
341
 
336
342
  def token_valid!(object)
337
343
  unless object.signature_token == MWS_TOKEN
338
- raise InauthenticError, "Token verification failed for #{object.class}. Expected #{MWS_TOKEN.inspect}; token was #{object.signature_token}"
344
+ raise InauthenticError, "Token verification failed. Expected #{MWS_TOKEN.inspect}; token was #{object.signature_token}"
339
345
  end
340
346
  end
341
347
  end
@@ -364,8 +370,7 @@ module MAuth
364
370
  expected_for_percent_reencoding = object.string_to_sign(time: object.x_mws_time, app_uuid: object.signature_app_uuid)
365
371
 
366
372
  # do a moderately complex Euresource-style reencoding of the path
367
- object.attributes_for_signing[:request_url] = CGI.escape(original_request_uri.to_s)
368
- object.attributes_for_signing[:request_url].gsub!('%2F', '/') # ...and then 'simply' decode the %2F's back into /'s, just like Euresource kind of does!
373
+ object.attributes_for_signing[:request_url] = euresource_escape(original_request_uri.to_s)
369
374
  expected_euresource_style_reencoding = object.string_to_sign(time: object.x_mws_time, app_uuid: object.signature_app_uuid)
370
375
 
371
376
  # reset the object original request_uri, just in case we need it again
@@ -383,6 +388,13 @@ module MAuth
383
388
  end
384
389
  end
385
390
 
391
+ # Note: RFC 3986 (https://www.ietf.org/rfc/rfc3986.txt) reserves the forward slash "/"
392
+ # and number sign "#" as component delimiters. Since these are valid URI components,
393
+ # they are decoded back into characters here to avoid signature invalidation
394
+ def euresource_escape(str)
395
+ CGI.escape(str).gsub(/%2F|%23/, "%2F" => "/", "%23" => "#")
396
+ end
397
+
386
398
  def retrieve_public_key(app_uuid)
387
399
  retrieve_security_token(app_uuid)['security_token']['public_key_str']
388
400
  end
@@ -395,12 +407,7 @@ module MAuth
395
407
  @security_token_cacher ||= SecurityTokenCacher.new(self)
396
408
  end
397
409
  class SecurityTokenCacher
398
- class ExpirableSecurityToken < Struct.new(:security_token, :create_time)
399
- CACHE_LIFE = 60
400
- def expired?
401
- create_time + CACHE_LIFE < Time.now
402
- end
403
- end
410
+
404
411
  def initialize(mauth_client)
405
412
  @mauth_client = mauth_client
406
413
  # TODO: should this be UnableToSignError?
@@ -411,7 +418,7 @@ module MAuth
411
418
  end
412
419
 
413
420
  def get(app_uuid)
414
- if !@cache[app_uuid] || @cache[app_uuid].expired?
421
+ if !@cache[app_uuid]
415
422
  # url-encode the app_uuid to prevent trickery like escaping upward with ../../ in a malicious
416
423
  # app_uuid - probably not exploitable, but this is the right way to do it anyway.
417
424
  # use UNRESERVED instead of UNSAFE (the default) as UNSAFE doesn't include /
@@ -422,13 +429,8 @@ module MAuth
422
429
  raise UnableToAuthenticateError, "mAuth service did not respond; received #{$!.class}: #{$!.message}"
423
430
  end
424
431
  if response.status == 200
425
- begin
426
- security_token = JSON.parse(response.body)
427
- rescue JSON::ParserError
428
- raise UnableToAuthenticateError, "mAuth service responded with unparseable json: #{response.body}\n#{$!.class}: #{$!.message}"
429
- end
430
432
  @cache_write_lock.synchronize do
431
- @cache[app_uuid] = ExpirableSecurityToken.new(security_token, Time.now)
433
+ @cache[app_uuid] = security_token_from(response.body)
432
434
  end
433
435
  elsif response.status == 404
434
436
  # signing with a key mAuth doesn't know about is considered inauthentic
@@ -437,11 +439,19 @@ module MAuth
437
439
  @mauth_client.send(:mauth_service_response_error, response)
438
440
  end
439
441
  end
440
- @cache[app_uuid].security_token
442
+ @cache[app_uuid]
441
443
  end
442
444
 
443
445
  private
444
446
 
447
+ def security_token_from(response_body)
448
+ JSON.parse response_body
449
+ rescue JSON::ParserError => e
450
+ msg = "mAuth service responded with unparseable json: #{response_body}\n#{e.class}: #{e.message}"
451
+ @mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
452
+ raise UnableToAuthenticateError, msg
453
+ end
454
+
445
455
  def signed_mauth_connection
446
456
  require 'faraday'
447
457
  require 'mauth/faraday'
@@ -449,6 +459,7 @@ module MAuth
449
459
  @signed_mauth_connection ||= ::Faraday.new(@mauth_client.mauth_baseurl, @mauth_client.faraday_options) do |builder|
450
460
  builder.use MAuth::Faraday::MAuthClientUserAgent
451
461
  builder.use MAuth::Faraday::RequestSigner, 'mauth_client' => @mauth_client
462
+ builder.use :http_cache, serializer: Oj, logger: MAuth::Client.new.logger, shared_cache: false
452
463
  builder.adapter ::Faraday.default_adapter
453
464
  end
454
465
  end
data/lib/mauth/proxy.rb CHANGED
@@ -55,8 +55,8 @@ module MAuth
55
55
  request_env['rack.input'].rewind
56
56
  request_headers = {}
57
57
  request_env.each do |k, v|
58
- if k.start_with?('HTTP_') && !%w(HTTP_HOST).include?(k)
59
- name = $'
58
+ if k.start_with?('HTTP_') && k != 'HTTP_HOST'
59
+ name = k.sub(/\AHTTP_/, '')
60
60
  request_headers[name] = v
61
61
  end
62
62
  end
data/lib/mauth/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module MAuth
2
- VERSION = '4.0.2'.freeze
2
+ VERSION = '4.2.0'.freeze
3
3
  end
data/mauth-client.gemspec CHANGED
@@ -11,26 +11,27 @@ 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.1.0'
14
+ spec.required_ruby_version = '>= 2.3.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'
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'faraday', '~> 0.7'
22
- spec.add_dependency 'faraday_middleware', '~> 0.9'
21
+ spec.add_dependency 'faraday', '>= 0.17', '< 1.0'
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'
23
25
  spec.add_dependency 'term-ansicolor', '~> 1.0'
24
26
  spec.add_dependency 'coderay', '~> 1.0'
25
27
  spec.add_dependency 'rack'
26
28
  spec.add_dependency 'dice_bag', '>= 0.9', '< 2.0'
27
29
 
28
- spec.add_development_dependency 'bundler', '~> 1.10'
29
- spec.add_development_dependency 'kender', '~> 0.4'
30
- spec.add_development_dependency 'rack-test', '~> 0.6.3'
31
- spec.add_development_dependency 'rake', '~> 10.0'
32
- spec.add_development_dependency 'rspec', '~> 3.4'
33
- spec.add_development_dependency 'simplecov', '~> 0.12.0'
34
- spec.add_development_dependency 'timecop', '~> 0.8.1'
35
- spec.add_development_dependency 'uuidtools', '~> 2.1.5'
30
+ spec.add_development_dependency 'bundler', '>= 1.17'
31
+ spec.add_development_dependency 'byebug'
32
+ spec.add_development_dependency 'rack-test', '~> 1.1.0'
33
+ spec.add_development_dependency 'rake', '~> 12.0'
34
+ spec.add_development_dependency 'rspec', '~> 3.8'
35
+ spec.add_development_dependency 'simplecov', '~> 0.16'
36
+ spec.add_development_dependency 'timecop', '~> 0.9'
36
37
  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: 4.0.2
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Szenher
@@ -11,36 +11,82 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2017-01-11 00:00:00.000000000 Z
14
+ date: 2021-06-16 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: faraday
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - "~>"
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: '0.7'
22
+ version: '0.17'
23
+ - - "<"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.0'
23
26
  type: :runtime
24
27
  prerelease: false
25
28
  version_requirements: !ruby/object:Gem::Requirement
26
29
  requirements:
27
- - - "~>"
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0.17'
33
+ - - "<"
28
34
  - !ruby/object:Gem::Version
29
- version: '0.7'
35
+ version: '1.0'
30
36
  - !ruby/object:Gem::Dependency
31
37
  name: faraday_middleware
32
38
  requirement: !ruby/object:Gem::Requirement
33
39
  requirements:
34
- - - "~>"
40
+ - - ">="
35
41
  - !ruby/object:Gem::Version
36
42
  version: '0.9'
43
+ - - "<"
44
+ - !ruby/object:Gem::Version
45
+ version: '2.0'
37
46
  type: :runtime
38
47
  prerelease: false
39
48
  version_requirements: !ruby/object:Gem::Requirement
40
49
  requirements:
41
- - - "~>"
50
+ - - ">="
42
51
  - !ruby/object:Gem::Version
43
52
  version: '0.9'
53
+ - - "<"
54
+ - !ruby/object:Gem::Version
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'
76
+ - !ruby/object:Gem::Dependency
77
+ name: oj
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
44
90
  - !ruby/object:Gem::Dependency
45
91
  name: term-ansicolor
46
92
  requirement: !ruby/object:Gem::Requirement
@@ -107,114 +153,100 @@ dependencies:
107
153
  name: bundler
108
154
  requirement: !ruby/object:Gem::Requirement
109
155
  requirements:
110
- - - "~>"
156
+ - - ">="
111
157
  - !ruby/object:Gem::Version
112
- version: '1.10'
158
+ version: '1.17'
113
159
  type: :development
114
160
  prerelease: false
115
161
  version_requirements: !ruby/object:Gem::Requirement
116
162
  requirements:
117
- - - "~>"
163
+ - - ">="
118
164
  - !ruby/object:Gem::Version
119
- version: '1.10'
165
+ version: '1.17'
120
166
  - !ruby/object:Gem::Dependency
121
- name: kender
167
+ name: byebug
122
168
  requirement: !ruby/object:Gem::Requirement
123
169
  requirements:
124
- - - "~>"
170
+ - - ">="
125
171
  - !ruby/object:Gem::Version
126
- version: '0.4'
172
+ version: '0'
127
173
  type: :development
128
174
  prerelease: false
129
175
  version_requirements: !ruby/object:Gem::Requirement
130
176
  requirements:
131
- - - "~>"
177
+ - - ">="
132
178
  - !ruby/object:Gem::Version
133
- version: '0.4'
179
+ version: '0'
134
180
  - !ruby/object:Gem::Dependency
135
181
  name: rack-test
136
182
  requirement: !ruby/object:Gem::Requirement
137
183
  requirements:
138
184
  - - "~>"
139
185
  - !ruby/object:Gem::Version
140
- version: 0.6.3
186
+ version: 1.1.0
141
187
  type: :development
142
188
  prerelease: false
143
189
  version_requirements: !ruby/object:Gem::Requirement
144
190
  requirements:
145
191
  - - "~>"
146
192
  - !ruby/object:Gem::Version
147
- version: 0.6.3
193
+ version: 1.1.0
148
194
  - !ruby/object:Gem::Dependency
149
195
  name: rake
150
196
  requirement: !ruby/object:Gem::Requirement
151
197
  requirements:
152
198
  - - "~>"
153
199
  - !ruby/object:Gem::Version
154
- version: '10.0'
200
+ version: '12.0'
155
201
  type: :development
156
202
  prerelease: false
157
203
  version_requirements: !ruby/object:Gem::Requirement
158
204
  requirements:
159
205
  - - "~>"
160
206
  - !ruby/object:Gem::Version
161
- version: '10.0'
207
+ version: '12.0'
162
208
  - !ruby/object:Gem::Dependency
163
209
  name: rspec
164
210
  requirement: !ruby/object:Gem::Requirement
165
211
  requirements:
166
212
  - - "~>"
167
213
  - !ruby/object:Gem::Version
168
- version: '3.4'
214
+ version: '3.8'
169
215
  type: :development
170
216
  prerelease: false
171
217
  version_requirements: !ruby/object:Gem::Requirement
172
218
  requirements:
173
219
  - - "~>"
174
220
  - !ruby/object:Gem::Version
175
- version: '3.4'
221
+ version: '3.8'
176
222
  - !ruby/object:Gem::Dependency
177
223
  name: simplecov
178
224
  requirement: !ruby/object:Gem::Requirement
179
225
  requirements:
180
226
  - - "~>"
181
227
  - !ruby/object:Gem::Version
182
- version: 0.12.0
228
+ version: '0.16'
183
229
  type: :development
184
230
  prerelease: false
185
231
  version_requirements: !ruby/object:Gem::Requirement
186
232
  requirements:
187
233
  - - "~>"
188
234
  - !ruby/object:Gem::Version
189
- version: 0.12.0
235
+ version: '0.16'
190
236
  - !ruby/object:Gem::Dependency
191
237
  name: timecop
192
238
  requirement: !ruby/object:Gem::Requirement
193
239
  requirements:
194
240
  - - "~>"
195
241
  - !ruby/object:Gem::Version
196
- version: 0.8.1
197
- type: :development
198
- prerelease: false
199
- version_requirements: !ruby/object:Gem::Requirement
200
- requirements:
201
- - - "~>"
202
- - !ruby/object:Gem::Version
203
- version: 0.8.1
204
- - !ruby/object:Gem::Dependency
205
- name: uuidtools
206
- requirement: !ruby/object:Gem::Requirement
207
- requirements:
208
- - - "~>"
209
- - !ruby/object:Gem::Version
210
- version: 2.1.5
242
+ version: '0.9'
211
243
  type: :development
212
244
  prerelease: false
213
245
  version_requirements: !ruby/object:Gem::Requirement
214
246
  requirements:
215
247
  - - "~>"
216
248
  - !ruby/object:Gem::Version
217
- version: 2.1.5
249
+ version: '0.9'
218
250
  description: Client for signing and authentication of requests and responses with
219
251
  mAuth authentication. Includes middleware for Rack and Faraday for incoming and
220
252
  outgoing requests and responses.
@@ -226,6 +258,7 @@ executables:
226
258
  extensions: []
227
259
  extra_rdoc_files: []
228
260
  files:
261
+ - ".fossa.yml"
229
262
  - ".gitignore"
230
263
  - ".travis.yml"
231
264
  - ".yardopts"
@@ -247,7 +280,6 @@ files:
247
280
  - examples/mauth_key
248
281
  - exe/mauth-client
249
282
  - exe/mauth-proxy
250
- - gemfiles/ruby_2.1.gemfile
251
283
  - lib/mauth-client.rb
252
284
  - lib/mauth/autoload.rb
253
285
  - lib/mauth/client.rb
@@ -277,15 +309,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
277
309
  requirements:
278
310
  - - ">="
279
311
  - !ruby/object:Gem::Version
280
- version: 2.1.0
312
+ version: 2.3.0
281
313
  required_rubygems_version: !ruby/object:Gem::Requirement
282
314
  requirements:
283
315
  - - ">="
284
316
  - !ruby/object:Gem::Version
285
317
  version: '0'
286
318
  requirements: []
287
- rubyforge_project:
288
- rubygems_version: 2.6.8
319
+ rubygems_version: 3.0.8
289
320
  signing_key:
290
321
  specification_version: 4
291
322
  summary: Sign and authenticate requests and responses with mAuth authentication.
@@ -1,5 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "rack", "1.6.5"
4
-
5
- gemspec :path => "../"