access_token_agent 3.1.1 → 3.5.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 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