access_token_agent 3.1.1 → 3.5.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: dc26e506a5e724e2f3fb483ffb8a8b7b74447e35
4
- data.tar.gz: 31cce846d3c53a66737d2f5cb603dcf269ea3119
2
+ SHA256:
3
+ metadata.gz: 9ce5b9bb39e762a8602e908ed0fd3f90a5a90a1ab5692b37512fd51fca5ffcbc
4
+ data.tar.gz: eb3bec64d9424a5197fc19e93ae26dd0d59f29a33fe3f1141dbffeed5e28ac9d
5
5
  SHA512:
6
- metadata.gz: 560a1ce6c00cf31738b7d3c2d6ae7ee2ef0b9b9857e01aa620d299197f8cdba74daaf031a2cb5b7eee60d4f6c77e5f581ed86ed9e1a1279fb5ac83132d9a91a1
7
- data.tar.gz: e5afd37637915dbe189fe7630b3b092e8cb588262f8c64167685711f9e2e0dc644bbbd08fc2f5d02a9333c35566dc5da2f36e29e17e607bdb20acd808cc17af5
6
+ metadata.gz: e6d2d273fb9013401936d16db02677ca8f84e843fe1634d79a2e03edab29eac96ee395d73275640177d610974bf652c1fe44303484d6150c22596db914118ee5
7
+ data.tar.gz: 1395a40b82a22e93cd3ff04b7b61fb56d5c76a281dc567f5713a5e3cdbec6558d545c506668f51ee7a374b277576b6bd8b931b0ecf64c6b470d5381f82250304
data/.gitignore CHANGED
@@ -2,5 +2,6 @@ Gemfile.lock
2
2
  coverage/
3
3
  tmp/
4
4
 
5
+ .ruby-version
5
6
  .ruby-gemset
6
7
  access_token_agent-*.gem
@@ -0,0 +1,54 @@
1
+ image: ruby:2.7
2
+
3
+ stages:
4
+ - test
5
+ - publish
6
+
7
+ before_script:
8
+ - bundle config jobs 8
9
+ - bundle install --path=/tmp/bundler --quiet
10
+
11
+ rubocop:
12
+ stage: test
13
+ image: ruby:2.2
14
+ script:
15
+ - bundle exec rubocop
16
+
17
+ rspec_latest:
18
+ stage: test
19
+ image: ruby
20
+ script:
21
+ - bundle exec rspec
22
+
23
+ rspec_2.6:
24
+ stage: test
25
+ image: ruby:2.6
26
+ script:
27
+ - bundle exec rspec
28
+
29
+ rspec_2.5:
30
+ stage: test
31
+ image: ruby:2.5
32
+ script:
33
+ - bundle exec rspec
34
+
35
+ rspec_2.2:
36
+ stage: test
37
+ image: ruby:2.2
38
+ script:
39
+ - bundle exec rspec
40
+
41
+ publish_gem:
42
+ stage: publish
43
+ script:
44
+ - mkdir -p ~/.gem
45
+ - |
46
+ cat << EOF > ~/.gem/credentials
47
+ ---
48
+ :rubygems_api_key: ${RUBYGEMS_API_KEY}
49
+ EOF
50
+ - chmod 0600 ~/.gem/credentials
51
+ - gem build access_token_agent.gemspec
52
+ - gem push $(find `pwd` -name "access_token_agent-*.gem")
53
+ only:
54
+ - master
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -1,28 +1,44 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.1
3
2
  Exclude:
3
+ - 'bin/**/*'
4
4
  - 'db/schema.rb'
5
5
  - 'doc/**/*'
6
- - 'Gemfile'
7
- - '*.gemspec'
6
+ - 'docker_app/**/*'
7
+ - 'Guardfile'
8
+ - 'tmp/**/*'
9
+ - 'vendor/**/*'
8
10
 
9
- Style/AsciiComments:
10
- Enabled: false
11
+ # We need to configure exemptions for blocks that we generally accept to be
12
+ # long, since they are less comparable to methods and more comparable to
13
+ # modules/classes.
14
+ Metrics/BlockLength:
15
+ ExcludedMethods:
16
+ - context
17
+ - describe
18
+ - namespace
19
+ Exclude:
20
+ - 'config/environments/*.rb' # instead of excluding all :configure methods
21
+ - 'config/routes.rb'
22
+
23
+ # The maximum amount of positional arguments in a method really shouldn't exceed
24
+ # the rubocop default of 5.
25
+ # However, keyword arguments do not make a method signature as unreadable as positional
26
+ # arguments. There are valid cases for longer argument lists (e.g. data objects or
27
+ # DSLs with implicit default values).
28
+ # In those cases keyword args provide a good balance between readability and the need to
29
+ # pass more arguments into an object.
30
+ Metrics/ParameterLists:
31
+ CountKeywordArgs: false
11
32
 
12
33
  Style/Documentation:
13
34
  Enabled: false
14
35
 
15
- # Encoding comments are not neccessary in all 2.x versions of ruby, since
16
- # UTF-8 has become the default encoding.
17
- Style/Encoding:
18
- EnforcedStyle: never
19
- Enabled: true
20
-
21
36
  # This cop tries to make you use module_funtion instead of extend self
22
37
  # This is bad because both have their own use-case and should not be used
23
38
  # and sometimes cannot be used to do the same thing
24
39
  Style/ModuleFunction:
25
40
  Enabled: false
41
+
26
42
  # While it is very often useful to separate numbers after every three digits
27
43
  # for readability, this mostly doesn't make sense if the number doesn't
28
44
  # represent an amount but rather an identifier. Thus the use of underscores
@@ -1,3 +1,31 @@
1
+ ## 3.5.0
2
+
3
+ - Support requesting scopes
4
+ - Add requirement for Ruby 2.2 to gemspec (this was an implicit requirement before)
5
+
6
+ ## 3.4.0
7
+
8
+ - Allows value of `token_type` to have any casing
9
+
10
+ ## 3.3.0
11
+
12
+ - Add `instance` accessor to `AccessTokenAgent::Connector`
13
+
14
+ ## 3.2.1
15
+
16
+ - Use a string as key in HTTP headers, to be compatible with Ruby < 2.3
17
+
18
+ ## 3.2.0
19
+
20
+ - Add `http_auth_header` method to the connector, since this is the most
21
+ common use case
22
+ - Deprecate the `authenticate` method in favor of the new `token` method
23
+ - Allow to configure from which path to get the access token
24
+ - Put all errors into the AccessTokenAgent namespace
25
+ - Actually return a token when faking auth
26
+ - Rename error raised for unsupported token types
27
+ - Ensure that access token response carries an access token
28
+
1
29
  ## 3.1.1
2
30
 
3
31
  - Fix broken gem release (missing files)
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- # encoding: UTF-8
1
+
2
2
  source 'https://rubygems.org'
3
3
 
4
4
  # Specify your gem's dependencies in auth_connector.gemspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/kaeuferportal/access_token_agent.svg?branch=master)](https://travis-ci.org/kaeuferportal/access_token_agent)
1
+ [![Gem Version](https://badge.fury.io/rb/access_token_agent.svg)](https://badge.fury.io/rb/access_token_agent)
2
2
 
3
3
  # AccessTokenAgent
4
4
 
@@ -12,19 +12,19 @@ OAuth2 [client credentials flow](https://tools.ietf.org/html/rfc6749#section-4.4
12
12
  Add this line to your application's Gemfile:
13
13
 
14
14
  ```ruby
15
- gem 'access_token_agent', '~> 3.1'
15
+ gem 'access_token_agent', '~> 3.4'
16
16
  ```
17
17
 
18
18
  And then execute:
19
19
 
20
20
  $ bundle
21
21
 
22
- ## Configuration
22
+ ## Basic configuration
23
23
 
24
24
  Create an instance of AccessTokenAgent::Connector with the desired
25
25
  configuration and use that instance to authenticate.
26
26
 
27
- Needs the following parameters:
27
+ Needs the following parameters to instantiate:
28
28
 
29
29
  * `host` - the server address where the auth provider is running.
30
30
  * `client_id` - the client_id of the application using this gem.
@@ -33,23 +33,41 @@ Needs the following parameters:
33
33
  Optional parameters:
34
34
 
35
35
  * `fake_auth` - if true, do not connect to the auth service and return
36
- an empty access token (`nil`).
36
+ a faked access token.
37
+ * `access_token_path` - Allows to customize the HTTP path where the
38
+ access token needs to be requested.
39
+ **Default:** `/oauth/token`
40
+ * `scopes` - An array of scopes to be requested from the authorization server
41
+ **Default:** no scopes
37
42
 
38
43
  ### Example
39
44
 
40
45
  ```ruby
41
- AccessTokenAgent::Connector.new(host: 'https://auth.kaeuferportal.de',
42
- client_id: 'my_client',
43
- client_secret: 'very_secure_and_secret')
46
+ @connector = AccessTokenAgent::Connector.new(host: 'https://auth.kaeuferportal.de',
47
+ client_id: 'my_client',
48
+ client_secret: 'very_secure_and_secret')
44
49
  ```
45
50
 
46
- ## Usage
51
+ ## Sharing a connector
52
+
53
+ When connecting to multiple endpoints you will commonly come across the need
54
+ to share a single instance of a connector in multiple places, because your
55
+ application will use the same configuration everywhere.
47
56
 
48
- Setup an AcccessTokenAgent::Connector instance (see Configuration) and call
49
- authenticate on it to receive your access_token.
57
+ You can use the convenience accessor `instance` for that:
50
58
 
59
+ ```ruby
60
+ AccessTokenAgent::Connector.instance = AccessTokenAgent::Connector.new(...)
51
61
  ```
52
- @access_token_agent.authenticate
62
+
63
+ ## Usage
64
+
65
+ Set up an AcccessTokenAgent::Connector instance (see Configuration) and call
66
+ `authenticate` on it to receive your access_token.
67
+
68
+ ```ruby
69
+ AccessTokenAgent::Connector.instance.authenticate
70
+ => "XYZ"
53
71
  ```
54
72
 
55
73
  When no valid AccessToken is present a call to authenticate returns one of the
@@ -62,3 +80,12 @@ following:
62
80
  As long as a valid AccessToken is present a call to authenticate simply returns
63
81
  that AccessToken. An AccessToken is valid for a limited time. The exact value is
64
82
  determined by the auth response which contains an `expires_at` parameter.
83
+
84
+ ### As HTTP Header
85
+
86
+ Since the most common use case is to include the access token as [RFC 6750](https://tools.ietf.org/html/rfc6750) bearer token, there is a method that returns the `Authorization: Bearer XYZ` header as hash:
87
+
88
+ ```ruby
89
+ AccessTokenAgent::Connector.instance.http_auth_header
90
+ => { "Authorization" => "Bearer XYZ" }
91
+ ```
@@ -1,24 +1,28 @@
1
- # coding: utf-8
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'access_token_agent/version'
2
4
 
3
5
  Gem::Specification.new do |s|
4
6
  s.name = 'access_token_agent'
5
- s.version = '3.1.1'
6
- s.date = '2016-04-08'
7
+ s.version = AccessTokenAgent::VERSION
8
+ s.date = '2020-10-02'
7
9
  s.summary = 'Handles authentication against an OAuth2 provider'
8
- s.homepage = 'https://github.com/kaeuferportal/access_token_agent'
9
- s.description = 'Retrieves an access token from an OAuth2 provider' \
10
+ s.homepage = 'https://github.com/aroundhome/access_token_agent'
11
+ s.description = 'Retrieves an access token from an OAuth2 provider ' \
10
12
  'using the supplied credentials.'
11
- s.authors = ['Beko Käuferportal GmbH']
12
- s.email = 'oss@kaeuferportal.de'
13
+ s.authors = ['be Around GmbH']
14
+ s.email = 'oss@aroundhome.de'
13
15
  s.license = 'MIT'
14
16
  s.files = `git ls-files -z`.split("\x0")
15
17
  .reject { |f| f.match(%r{^spec/}) }
16
18
 
17
- s.add_development_dependency 'bundler', '~> 1.11'
18
- s.add_development_dependency 'rspec', '~> 3.4'
19
+ s.required_ruby_version = '>= 2.2'
20
+
21
+ s.add_development_dependency 'bundler', '> 1.11', '< 3'
19
22
  s.add_development_dependency 'pry', '~> 0.10'
20
- s.add_development_dependency 'rubocop', '~> 0.39'
21
- s.add_development_dependency 'vcr', '~> 3.0'
22
- s.add_development_dependency 'webmock', '~> 1.24'
23
- s.add_development_dependency 'simplecov', '~> 0.11'
23
+ s.add_development_dependency 'rspec', '~> 3.4'
24
+ s.add_development_dependency 'rubocop', '0.51'
25
+ s.add_development_dependency 'simplecov', '~> 0.16'
26
+ s.add_development_dependency 'vcr', '~> 5.0'
27
+ s.add_development_dependency 'webmock', '~> 3.0'
24
28
  end
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'access_token_agent'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ require 'pry'
11
+ Pry.start
@@ -3,3 +3,4 @@ require 'access_token_agent/unauthorized_error'
3
3
  require 'access_token_agent/connection_error'
4
4
  require 'access_token_agent/token'
5
5
  require 'access_token_agent/connector'
6
+ require 'access_token_agent/version'
@@ -2,28 +2,51 @@ require 'net/http'
2
2
 
3
3
  module AccessTokenAgent
4
4
  class Connector
5
+ FAKE_TOKEN = 'FakeAuthToken'.freeze
6
+
7
+ class << self
8
+ attr_accessor :instance
9
+ end
10
+
5
11
  def initialize(host:,
6
12
  client_id:,
7
13
  client_secret:,
8
- fake_auth: false)
14
+ fake_auth: false,
15
+ access_token_path: '/oauth/token',
16
+ scopes: nil)
9
17
  @host = host
10
18
  @client_id = client_id
11
19
  @client_secret = client_secret
12
20
  @fake_auth = fake_auth
21
+ @access_token_path = access_token_path
22
+ @scopes = scopes
13
23
  end
14
24
 
15
- def authenticate
16
- return if @fake_auth
17
- fetch_token unless @known_token && @known_token.valid?
25
+ def http_auth_header
26
+ { 'Authorization' => "Bearer #{token}" }
27
+ end
28
+
29
+ def token
30
+ return FAKE_TOKEN if @fake_auth
31
+ @known_token = fetch_token unless @known_token && @known_token.valid?
32
+
18
33
  @known_token.value
19
34
  end
20
35
 
36
+ def authenticate
37
+ warn "[DEPRECATION] `#{self.class}.authenticate` is deprecated. " \
38
+ 'Use `token` instead.'
39
+ token
40
+ end
41
+
42
+ private
43
+
21
44
  def fetch_token
22
- @known_token = Token.new(from_auth)
45
+ Token.new(fetch_token_hash)
23
46
  end
24
47
 
25
- def from_auth
26
- response = request
48
+ def fetch_token_hash
49
+ response = perform_request
27
50
  case response.code
28
51
  when '200' then JSON.parse(response.body)
29
52
  when '401' then raise UnauthorizedError
@@ -34,10 +57,10 @@ module AccessTokenAgent
34
57
  raise ConnectionError
35
58
  end
36
59
 
37
- def request
60
+ def perform_request
38
61
  request = Net::HTTP::Post.new(auth_uri)
39
62
  request.basic_auth @client_id, @client_secret
40
- request.form_data = { 'grant_type' => 'client_credentials' }
63
+ request.form_data = form_data
41
64
  use_tls = auth_uri.scheme == 'https'
42
65
  Net::HTTP.start(auth_uri.hostname,
43
66
  auth_uri.port,
@@ -47,7 +70,13 @@ module AccessTokenAgent
47
70
  end
48
71
 
49
72
  def auth_uri
50
- @auth_uri ||= URI("#{@host}/oauth/token")
73
+ @auth_uri ||= URI("#{@host}#{@access_token_path}")
74
+ end
75
+
76
+ def form_data
77
+ result = { 'grant_type' => 'client_credentials' }
78
+ result['scope'] = @scopes.join(' ') if @scopes
79
+ result
51
80
  end
52
81
  end
53
82
  end
@@ -1,2 +1,4 @@
1
- class Error < StandardError
1
+ module AccessTokenAgent
2
+ class Error < StandardError
3
+ end
2
4
  end
@@ -0,0 +1,7 @@
1
+ module AccessTokenAgent
2
+ class MissingAccessToken < Error
3
+ def initialize
4
+ super('The access token response did not contain an access token.')
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module AccessTokenAgent
2
+ class MissingTokenType < Error
3
+ def initialize
4
+ super('The access token response did not contain a token type.')
5
+ end
6
+ end
7
+ end
@@ -1,4 +1,6 @@
1
- require 'access_token_agent/invalid_token_type_error'
1
+ require 'access_token_agent/missing_access_token'
2
+ require 'access_token_agent/missing_token_type'
3
+ require 'access_token_agent/unsupported_token_type_error'
2
4
 
3
5
  module AccessTokenAgent
4
6
  class Token
@@ -7,9 +9,8 @@ module AccessTokenAgent
7
9
  EXPIRY_MARGIN = 60 # seconds
8
10
 
9
11
  def initialize(auth_response)
10
- unless auth_response['token_type'] == 'bearer'
11
- raise InvalidTokenTypeError, auth_response['token_type']
12
- end
12
+ validate_response(auth_response)
13
+
13
14
  @value = auth_response['access_token']
14
15
  @expires_at = Time.now + auth_response['expires_in']
15
16
  end
@@ -17,5 +18,17 @@ module AccessTokenAgent
17
18
  def valid?
18
19
  @expires_at - EXPIRY_MARGIN > Time.now
19
20
  end
21
+
22
+ private
23
+
24
+ def validate_response(auth_response)
25
+ raise MissingTokenType if auth_response['token_type'].nil?
26
+ unless auth_response['token_type'].downcase == 'bearer'
27
+ raise UnsupportedTokenTypeError, auth_response['token_type']
28
+ end
29
+
30
+ token = auth_response['access_token']
31
+ raise MissingAccessToken if token.nil? || token.empty?
32
+ end
20
33
  end
21
34
  end
@@ -0,0 +1,7 @@
1
+ module AccessTokenAgent
2
+ class UnsupportedTokenTypeError < Error
3
+ def initialize(token_type)
4
+ super("Expected token_type to be 'bearer', but was '#{token_type}'.")
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module AccessTokenAgent
2
+ VERSION = '3.5.0'.freeze
3
+ end
metadata CHANGED
@@ -1,136 +1,147 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: access_token_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
- - Beko Käuferportal GmbH
7
+ - be Around GmbH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-08 00:00:00.000000000 Z
11
+ date: 2020-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.11'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.11'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
27
33
  - !ruby/object:Gem::Dependency
28
- name: rspec
34
+ name: pry
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '3.4'
39
+ version: '0.10'
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '3.4'
46
+ version: '0.10'
41
47
  - !ruby/object:Gem::Dependency
42
- name: pry
48
+ name: rspec
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '0.10'
53
+ version: '3.4'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '0.10'
60
+ version: '3.4'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: rubocop
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - "~>"
65
+ - - '='
60
66
  - !ruby/object:Gem::Version
61
- version: '0.39'
67
+ version: '0.51'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - "~>"
72
+ - - '='
67
73
  - !ruby/object:Gem::Version
68
- version: '0.39'
74
+ version: '0.51'
69
75
  - !ruby/object:Gem::Dependency
70
- name: vcr
76
+ name: simplecov
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: '3.0'
81
+ version: '0.16'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: '3.0'
88
+ version: '0.16'
83
89
  - !ruby/object:Gem::Dependency
84
- name: webmock
90
+ name: vcr
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '1.24'
95
+ version: '5.0'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '1.24'
102
+ version: '5.0'
97
103
  - !ruby/object:Gem::Dependency
98
- name: simplecov
104
+ name: webmock
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
107
  - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: '0.11'
109
+ version: '3.0'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
114
  - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: '0.11'
111
- description: Retrieves an access token from an OAuth2 providerusing the supplied credentials.
112
- email: oss@kaeuferportal.de
116
+ version: '3.0'
117
+ description: Retrieves an access token from an OAuth2 provider using the supplied
118
+ credentials.
119
+ email: oss@aroundhome.de
113
120
  executables: []
114
121
  extensions: []
115
122
  extra_rdoc_files: []
116
123
  files:
117
124
  - ".gitignore"
125
+ - ".gitlab-ci.yml"
126
+ - ".rspec"
118
127
  - ".rubocop.yml"
119
- - ".ruby-version"
120
- - ".travis.yml"
121
128
  - CHANGELOG.md
122
129
  - Gemfile
123
130
  - LICENSE.md
124
131
  - README.md
125
132
  - access_token_agent.gemspec
133
+ - bin/console
126
134
  - lib/access_token_agent.rb
127
135
  - lib/access_token_agent/connection_error.rb
128
136
  - lib/access_token_agent/connector.rb
129
137
  - lib/access_token_agent/error.rb
130
- - lib/access_token_agent/invalid_token_type_error.rb
138
+ - lib/access_token_agent/missing_access_token.rb
139
+ - lib/access_token_agent/missing_token_type.rb
131
140
  - lib/access_token_agent/token.rb
132
141
  - lib/access_token_agent/unauthorized_error.rb
133
- homepage: https://github.com/kaeuferportal/access_token_agent
142
+ - lib/access_token_agent/unsupported_token_type_error.rb
143
+ - lib/access_token_agent/version.rb
144
+ homepage: https://github.com/aroundhome/access_token_agent
134
145
  licenses:
135
146
  - MIT
136
147
  metadata: {}
@@ -142,15 +153,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
153
  requirements:
143
154
  - - ">="
144
155
  - !ruby/object:Gem::Version
145
- version: '0'
156
+ version: '2.2'
146
157
  required_rubygems_version: !ruby/object:Gem::Requirement
147
158
  requirements:
148
159
  - - ">="
149
160
  - !ruby/object:Gem::Version
150
161
  version: '0'
151
162
  requirements: []
152
- rubyforge_project:
153
- rubygems_version: 2.2.5
163
+ rubygems_version: 3.1.4
154
164
  signing_key:
155
165
  specification_version: 4
156
166
  summary: Handles authentication against an OAuth2 provider
@@ -1 +0,0 @@
1
- 2.1.10
@@ -1,4 +0,0 @@
1
- language: ruby
2
- script:
3
- - bundle exec rspec
4
- - bundle exec rubocop
@@ -1,5 +0,0 @@
1
- class InvalidTokenTypeError < Error
2
- def initialize(token_type)
3
- super("Expected token_type to be 'bearer', but was '#{token_type}'.")
4
- end
5
- end