oauth2 1.0.0 → 1.1.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
  SHA1:
3
- metadata.gz: 5a7e97c3a76d87a0499aa0cd5f9b908df43f5b91
4
- data.tar.gz: 390e6188e44d5e7eb909a29141b63dc05276608d
3
+ metadata.gz: 0e6df01671ac06be9840d38d64d3cc349e3f8a41
4
+ data.tar.gz: 4ebfa842881a53f3c98cc407646614f5f8883cbc
5
5
  SHA512:
6
- metadata.gz: fe86948ffabdc2334b89db64fb4cb6c98a65f93198b543b380cab70c9d18daa47fcf92272678f5794caf23827e8e4e93f3d053d106d98a0438b4f1befb86301b
7
- data.tar.gz: c5a507967b19c5019aaa4fd8f52448c78b4d13ada1041705d0f6526bc96b2b04311e063f7f5f98cd4a6520c61ab79eb841626c6e6dcf510bdb7a94c801e52ba1
6
+ metadata.gz: fde60355bd37fd6ab71e9f103fae0d4fbb065b62c4070c95aef84842fb9cfce6a6125e75a0e78e98c87c54c32ccc72042a1c5cfae514d534799310ac5a82e0c6
7
+ data.tar.gz: 6c358951c337a85275fe064a599e2fa03d92c4eeb3425d3ec2e51b857aa42cdcfd31ab1e1a2e77a2e9780c246970a0bcde4c3ae2e42c5775847e951faf45be28
data/README.md CHANGED
@@ -104,7 +104,6 @@ This library aims to support and is [tested against][travis] the following Ruby
104
104
  implementations:
105
105
 
106
106
  * Ruby 1.8.7
107
- * Ruby 1.9.2
108
107
  * Ruby 1.9.3
109
108
  * Ruby 2.0.0
110
109
  * Ruby 2.1.0
@@ -36,7 +36,7 @@ module OAuth2
36
36
  # @option opts [String] :header_format ('Bearer %s') the string format to use for the Authorization header
37
37
  # @option opts [String] :param_name ('access_token') the parameter name to use for transmission of the
38
38
  # Access Token value in :body or :query transmission mode
39
- def initialize(client, token, opts = {})
39
+ def initialize(client, token, opts = {}) # rubocop:disable Metrics/AbcSize
40
40
  @client = client
41
41
  @token = token.to_s
42
42
  [:refresh_token, :expires_in, :expires_at].each do |arg|
@@ -63,7 +63,7 @@ module OAuth2
63
63
  #
64
64
  # @return [Boolean]
65
65
  def expires?
66
- !!@expires_at # rubocop:disable DoubleNegation
66
+ !!@expires_at
67
67
  end
68
68
 
69
69
  # Whether or not the token is expired
@@ -79,10 +79,10 @@ module OAuth2
79
79
  # @note options should be carried over to the new AccessToken
80
80
  def refresh!(params = {})
81
81
  fail('A refresh_token is not available') unless refresh_token
82
- params.merge!(:client_id => @client.id,
83
- :client_secret => @client.secret,
84
- :grant_type => 'refresh_token',
85
- :refresh_token => refresh_token)
82
+ params[:client_id] = @client.id
83
+ params[:client_secret] = @client.secret
84
+ params[:grant_type] = 'refresh_token'
85
+ params[:refresh_token] = refresh_token
86
86
  new_token = @client.get_token(params)
87
87
  new_token.options = options
88
88
  new_token.refresh_token = refresh_token unless new_token.refresh_token
@@ -149,7 +149,7 @@ module OAuth2
149
149
 
150
150
  private
151
151
 
152
- def token=(opts) # rubocop:disable MethodLength
152
+ def token=(opts) # rubocop:disable MethodLength, Metrics/AbcSize
153
153
  case options[:mode]
154
154
  when :header
155
155
  opts[:headers] ||= {}
@@ -85,7 +85,7 @@ module OAuth2
85
85
  # code response for this request. Will default to client option
86
86
  # @option opts [Symbol] :parse @see Response::initialize
87
87
  # @yield [req] The Faraday request
88
- def request(verb, url, opts = {}) # rubocop:disable CyclomaticComplexity, MethodLength
88
+ def request(verb, url, opts = {}) # rubocop:disable CyclomaticComplexity, MethodLength, Metrics/AbcSize
89
89
  connection.response :logger, ::Logger.new($stdout) if ENV['OAUTH_DEBUG'] == 'true'
90
90
 
91
91
  url = connection.build_url(url, opts[:params]).to_s
@@ -125,12 +125,12 @@ module OAuth2
125
125
  # @param [Hash] access token options, to pass to the AccessToken object
126
126
  # @param [Class] class of access token for easier subclassing OAuth2::AccessToken
127
127
  # @return [AccessToken] the initalized AccessToken
128
- def get_token(params, access_token_opts = {}, access_token_class = AccessToken)
128
+ def get_token(params, access_token_opts = {}, access_token_class = AccessToken) # rubocop:disable Metrics/AbcSize
129
129
  opts = {:raise_errors => options[:raise_errors], :parse => params.delete(:parse)}
130
130
  if options[:token_method] == :post
131
131
  headers = params.delete(:headers)
132
132
  opts[:body] = params
133
- opts[:headers] = {'Content-Type' => 'application/x-www-form-urlencoded'}
133
+ opts[:headers] = {'Content-Type' => 'application/x-www-form-urlencoded'}
134
134
  opts[:headers].merge!(headers) if headers
135
135
  else
136
136
  opts[:params] = params
@@ -12,11 +12,7 @@ module OAuth2
12
12
  # @param [Hash] opts the options to create the Access Token with
13
13
  # @see MACToken#initialize
14
14
  def self.from_access_token(token, secret, options = {})
15
- new(token.client, token.token, secret, token.params.merge(
16
- :refresh_token => token.refresh_token,
17
- :expires_in => token.expires_in,
18
- :expires_at => token.expires_at
19
- ).merge(options))
15
+ new(token.client, token.token, secret, token.params.merge(:refresh_token => token.refresh_token, :expires_in => token.expires_in, :expires_at => token.expires_at).merge(options))
20
16
  end
21
17
 
22
18
  attr_reader :secret, :algorithm
@@ -48,7 +44,7 @@ module OAuth2
48
44
  url = client.connection.build_url(path, opts[:params]).to_s
49
45
 
50
46
  opts[:headers] ||= {}
51
- opts[:headers].merge!('Authorization' => header(verb, url))
47
+ opts[:headers]['Authorization'] = header(verb, url)
52
48
 
53
49
  @client.request(verb, path, opts, &block)
54
50
  end
@@ -99,7 +95,8 @@ module OAuth2
99
95
  #
100
96
  # @param [String] alg the algorithm to use (one of 'hmac-sha-1', 'hmac-sha-256')
101
97
  def algorithm=(alg)
102
- @algorithm = case alg.to_s
98
+ @algorithm = begin
99
+ case alg.to_s
103
100
  when 'hmac-sha-1'
104
101
  OpenSSL::Digest::SHA1.new
105
102
  when 'hmac-sha-256'
@@ -107,6 +104,7 @@ module OAuth2
107
104
  else
108
105
  fail(ArgumentError, 'Unsupported algorithm')
109
106
  end
107
+ end
110
108
  end
111
109
 
112
110
  private
@@ -118,7 +116,7 @@ module OAuth2
118
116
 
119
117
  # Base64.strict_encode64 is not available on Ruby 1.8.7
120
118
  def strict_encode64(str)
121
- Base64.encode64(str).gsub("\n", '')
119
+ Base64.encode64(str).delete("\n")
122
120
  end
123
121
  end
124
122
  end
@@ -8,6 +8,22 @@ module OAuth2
8
8
  attr_reader :response
9
9
  attr_accessor :error, :options
10
10
 
11
+ # Procs that, when called, will parse a response body according
12
+ # to the specified format.
13
+ @@parsers = {
14
+ :json => lambda { |body| MultiJson.load(body) rescue body }, # rubocop:disable RescueModifier
15
+ :query => lambda { |body| Rack::Utils.parse_query(body) },
16
+ :text => lambda { |body| body },
17
+ }
18
+
19
+ # Content type assignments for various potential HTTP content types.
20
+ @@content_types = {
21
+ 'application/json' => :json,
22
+ 'text/javascript' => :json,
23
+ 'application/x-www-form-urlencoded' => :query,
24
+ 'text/plain' => :text,
25
+ }
26
+
11
27
  # Adds a new content type parser.
12
28
  #
13
29
  # @param [Symbol] key A descriptive symbol key such as :json or :query.
@@ -15,9 +31,9 @@ module OAuth2
15
31
  # @yield [String] A block returning parsed content.
16
32
  def self.register_parser(key, mime_types, &block)
17
33
  key = key.to_sym
18
- PARSERS[key] = block
34
+ @@parsers[key] = block
19
35
  Array(mime_types).each do |mime_type|
20
- CONTENT_TYPES[mime_type] = key
36
+ @@content_types[mime_type] = key
21
37
  end
22
38
  end
23
39
 
@@ -47,28 +63,12 @@ module OAuth2
47
63
  response.body || ''
48
64
  end
49
65
 
50
- # Procs that, when called, will parse a response body according
51
- # to the specified format.
52
- PARSERS = {
53
- :json => lambda { |body| MultiJson.load(body) rescue body }, # rubocop:disable RescueModifier
54
- :query => lambda { |body| Rack::Utils.parse_query(body) },
55
- :text => lambda { |body| body }
56
- }
57
-
58
- # Content type assignments for various potential HTTP content types.
59
- CONTENT_TYPES = {
60
- 'application/json' => :json,
61
- 'text/javascript' => :json,
62
- 'application/x-www-form-urlencoded' => :query,
63
- 'text/plain' => :text
64
- }
65
-
66
66
  # The parsed response body.
67
67
  # Will attempt to parse application/x-www-form-urlencoded and
68
68
  # application/json Content-Type response bodies
69
69
  def parsed
70
- return nil unless PARSERS.key?(parser)
71
- @parsed ||= PARSERS[parser].call(body)
70
+ return nil unless @@parsers.key?(parser)
71
+ @parsed ||= @@parsers[parser].call(body)
72
72
  end
73
73
 
74
74
  # Attempts to determine the content type of the response.
@@ -78,8 +78,8 @@ module OAuth2
78
78
 
79
79
  # Determines the parser that will be used to supply the content of #parsed
80
80
  def parser
81
- return options[:parse].to_sym if PARSERS.key?(options[:parse])
82
- CONTENT_TYPES[content_type]
81
+ return options[:parse].to_sym if @@parsers.key?(options[:parse])
82
+ @@content_types[content_type]
83
83
  end
84
84
  end
85
85
  end
@@ -52,7 +52,7 @@ module OAuth2
52
52
  {:grant_type => 'assertion',
53
53
  :assertion_type => 'urn:ietf:params:oauth:grant-type:jwt-bearer',
54
54
  :assertion => assertion,
55
- :scope => params[:scope]
55
+ :scope => params[:scope],
56
56
  }.merge(client_params)
57
57
  end
58
58
 
@@ -60,7 +60,7 @@ module OAuth2
60
60
  claims = {:iss => params[:iss],
61
61
  :aud => params[:aud],
62
62
  :prn => params[:prn],
63
- :exp => params[:exp]
63
+ :exp => params[:exp],
64
64
  }
65
65
  if params[:hmac_secret]
66
66
  JWT.encode(claims, params[:hmac_secret], 'HS256')
@@ -19,7 +19,7 @@ module OAuth2
19
19
  # @param [Hash] opts options
20
20
  def get_token(params = {}, opts = {})
21
21
  request_body = opts.delete('auth_scheme') == 'request_body'
22
- params.merge!('grant_type' => 'client_credentials')
22
+ params['grant_type'] = 'client_credentials'
23
23
  params.merge!(request_body ? client_params : {:headers => {'Authorization' => authorization(client_params['client_id'], client_params['client_secret'])}})
24
24
  @client.get_token(params, opts.merge('refresh_token' => nil))
25
25
  end
@@ -29,7 +29,7 @@ module OAuth2
29
29
  # @param [String] The client ID
30
30
  # @param [String] the client secret
31
31
  def authorization(client_id, client_secret)
32
- 'Basic ' + Base64.encode64(client_id + ':' + client_secret).gsub("\n", '')
32
+ 'Basic ' + Base64.encode64(client_id + ':' + client_secret).delete("\n")
33
33
  end
34
34
  end
35
35
  end
@@ -1,15 +1,59 @@
1
1
  module OAuth2
2
- class Version
3
- MAJOR = 1
4
- MINOR = 0
5
- PATCH = 0
6
- PRE = nil
7
-
8
- class << self
9
- # @return [String]
10
- def to_s
11
- [MAJOR, MINOR, PATCH, PRE].compact.join('.')
12
- end
2
+ module Version
3
+ module_function
4
+
5
+ # The major version
6
+ #
7
+ # @return [Integer]
8
+ def major
9
+ 1
10
+ end
11
+
12
+ # The minor version
13
+ #
14
+ # @return [Integer]
15
+ def minor
16
+ 1
17
+ end
18
+
19
+ # The patch version
20
+ #
21
+ # @return [Integer]
22
+ def patch
23
+ 0
24
+ end
25
+
26
+ # The pre-release version, if any
27
+ #
28
+ # @return [Integer, NilClass]
29
+ def pre
30
+ nil
31
+ end
32
+
33
+ # The version number as a hash
34
+ #
35
+ # @return [Hash]
36
+ def to_h
37
+ {
38
+ :major => major,
39
+ :minor => minor,
40
+ :patch => patch,
41
+ :pre => pre,
42
+ }
43
+ end
44
+
45
+ # The version number as an array
46
+ #
47
+ # @return [Array]
48
+ def to_a
49
+ [major, minor, patch, pre].compact
50
+ end
51
+
52
+ # The version number as a string
53
+ #
54
+ # @return [String]
55
+ def to_s
56
+ to_a.join('.')
13
57
  end
14
58
  end
15
59
  end
@@ -5,23 +5,20 @@ require 'oauth2/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.add_dependency 'faraday', ['>= 0.8', '< 0.10']
8
- spec.add_dependency 'jwt', '~> 1.0'
8
+ spec.add_dependency 'jwt', '~> 1.0', '< 1.5.2'
9
9
  spec.add_dependency 'multi_json', '~> 1.3'
10
10
  spec.add_dependency 'multi_xml', '~> 0.5'
11
- spec.add_dependency 'rack', '~> 1.2'
11
+ spec.add_dependency 'rack', ['>= 1.2', '< 3']
12
12
  spec.add_development_dependency 'bundler', '~> 1.0'
13
13
  spec.authors = ['Michael Bleigh', 'Erik Michaels-Ober']
14
14
  spec.description = 'A Ruby wrapper for the OAuth 2.0 protocol built with a similar style to the original OAuth spec.'
15
15
  spec.email = ['michael@intridea.com', 'sferik@gmail.com']
16
- spec.files = %w(.document CONTRIBUTING.md LICENSE.md README.md Rakefile oauth2.gemspec)
17
- spec.files += Dir.glob('lib/**/*.rb')
18
- spec.files += Dir.glob('spec/**/*')
16
+ spec.files = %w(.document CONTRIBUTING.md LICENSE.md README.md oauth2.gemspec) + Dir['lib/**/*.rb']
19
17
  spec.homepage = 'http://github.com/intridea/oauth2'
20
18
  spec.licenses = %w(MIT)
21
19
  spec.name = 'oauth2'
22
20
  spec.require_paths = %w(lib)
23
21
  spec.required_rubygems_version = '>= 1.3.5'
24
22
  spec.summary = 'A Ruby wrapper for the OAuth 2.0 protocol.'
25
- spec.test_files = Dir.glob('spec/**/*')
26
23
  spec.version = OAuth2::Version
27
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-09 00:00:00.000000000 Z
12
+ date: 2016-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -38,6 +38,9 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
+ - - "<"
42
+ - !ruby/object:Gem::Version
43
+ version: 1.5.2
41
44
  type: :runtime
42
45
  prerelease: false
43
46
  version_requirements: !ruby/object:Gem::Requirement
@@ -45,6 +48,9 @@ dependencies:
45
48
  - - "~>"
46
49
  - !ruby/object:Gem::Version
47
50
  version: '1.0'
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: 1.5.2
48
54
  - !ruby/object:Gem::Dependency
49
55
  name: multi_json
50
56
  requirement: !ruby/object:Gem::Requirement
@@ -77,16 +83,22 @@ dependencies:
77
83
  name: rack
78
84
  requirement: !ruby/object:Gem::Requirement
79
85
  requirements:
80
- - - "~>"
86
+ - - ">="
81
87
  - !ruby/object:Gem::Version
82
88
  version: '1.2'
89
+ - - "<"
90
+ - !ruby/object:Gem::Version
91
+ version: '3'
83
92
  type: :runtime
84
93
  prerelease: false
85
94
  version_requirements: !ruby/object:Gem::Requirement
86
95
  requirements:
87
- - - "~>"
96
+ - - ">="
88
97
  - !ruby/object:Gem::Version
89
98
  version: '1.2'
99
+ - - "<"
100
+ - !ruby/object:Gem::Version
101
+ version: '3'
90
102
  - !ruby/object:Gem::Dependency
91
103
  name: bundler
92
104
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +126,6 @@ files:
114
126
  - CONTRIBUTING.md
115
127
  - LICENSE.md
116
128
  - README.md
117
- - Rakefile
118
129
  - lib/oauth2.rb
119
130
  - lib/oauth2/access_token.rb
120
131
  - lib/oauth2/client.rb
@@ -129,17 +140,6 @@ files:
129
140
  - lib/oauth2/strategy/password.rb
130
141
  - lib/oauth2/version.rb
131
142
  - oauth2.gemspec
132
- - spec/helper.rb
133
- - spec/oauth2/access_token_spec.rb
134
- - spec/oauth2/client_spec.rb
135
- - spec/oauth2/mac_token_spec.rb
136
- - spec/oauth2/response_spec.rb
137
- - spec/oauth2/strategy/assertion_spec.rb
138
- - spec/oauth2/strategy/auth_code_spec.rb
139
- - spec/oauth2/strategy/base_spec.rb
140
- - spec/oauth2/strategy/client_credentials_spec.rb
141
- - spec/oauth2/strategy/implicit_spec.rb
142
- - spec/oauth2/strategy/password_spec.rb
143
143
  homepage: http://github.com/intridea/oauth2
144
144
  licenses:
145
145
  - MIT
@@ -160,20 +160,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  version: 1.3.5
161
161
  requirements: []
162
162
  rubyforge_project:
163
- rubygems_version: 2.2.2
163
+ rubygems_version: 2.2.5
164
164
  signing_key:
165
165
  specification_version: 4
166
166
  summary: A Ruby wrapper for the OAuth 2.0 protocol.
167
- test_files:
168
- - spec/helper.rb
169
- - spec/oauth2/access_token_spec.rb
170
- - spec/oauth2/client_spec.rb
171
- - spec/oauth2/mac_token_spec.rb
172
- - spec/oauth2/response_spec.rb
173
- - spec/oauth2/strategy/assertion_spec.rb
174
- - spec/oauth2/strategy/auth_code_spec.rb
175
- - spec/oauth2/strategy/base_spec.rb
176
- - spec/oauth2/strategy/client_credentials_spec.rb
177
- - spec/oauth2/strategy/implicit_spec.rb
178
- - spec/oauth2/strategy/password_spec.rb
167
+ test_files: []
179
168
  has_rdoc: