oauthenticator 1.2.0 → 1.3.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
- ---
2
- SHA1:
3
- metadata.gz: f69d23d4847799b28bcac89a56d812472727cf3d
4
- data.tar.gz: ca253660ea69d85715f8ebe2427f45744e8aec57
5
- SHA512:
6
- metadata.gz: 7f2a35dc3501fa2542095db00906675fd0f77d40a3f0356e419a35399de4a3cd6ae7086b0420723529a271b6285b33efbdcf908e2b5c55109d81437fbf5fe7e2
7
- data.tar.gz: b81c5679eb69fd602b0eb659e3be7c9f4b6df60792237a94aedcba0a47e231ecd9e6f5835fecc5a59b08ba50c42683160d2ca04a5957cccb800a6db5550622db
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1c1af0773c8a1b3a3d9c3f1868856e19413eb8d6
4
+ data.tar.gz: 7d25f481acab4498447468b50dafcbd3d3afa87c
5
+ SHA512:
6
+ metadata.gz: b087ed346c3d4919a29882e7d499cee5a316fa75e0193123617b8e18c0490c1a9791db2a2aac98bf73675736b8ff2741e4859c0c22b3c55dc78442d34bde31b9
7
+ data.tar.gz: c007f8fa60d9a7b0e1c54af75a56fe81f02faa4f449cba5030c184a59844ef9efc4f05f7a87e05101c41565f36f0ae67acff06a1f033dc2926e1985fef7a0130
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # 1.3.0
2
+
3
+ - Make error messages fully-human readable on their own (not requiring context of the error key)
4
+ - Add error_message key to error response, with a sentence of error messages.
5
+ - clarify argument errors
6
+
1
7
  # 1.2.0
2
8
 
3
9
  - OAuthenticator::RackTestSigner / OAuthenticator.signing_rack_test
@@ -50,7 +50,7 @@ module OAuthenticator
50
50
  duplicates = attributes.reject { |k,v| v.size <= 1 }
51
51
  if duplicates.any?
52
52
  errors = duplicates.map do |k,vs|
53
- {k => "Received multiple instances of Authorization parameter #{k}. Received values were: #{vs.inspect}"}
53
+ {k => ["Received multiple instances of Authorization parameter #{k}. Received values were: #{vs.inspect}"]}
54
54
  end.inject({}, &:update)
55
55
  raise DuplicatedParameters.new("Received duplicate parameters: #{duplicates.keys.inspect}", errors)
56
56
  end
@@ -45,7 +45,7 @@ module OAuthenticator
45
45
  oauth_request = oauth_signed_request_class.from_rack_request(request)
46
46
  if oauth_request.errors
47
47
  log_unauthenticated(env, oauth_request)
48
- unauthenticated_response({'errors' => oauth_request.errors})
48
+ unauthenticated_response(oauth_request.errors)
49
49
  else
50
50
  log_success(env, oauth_request)
51
51
  env["oauth.consumer_key"] = oauth_request.consumer_key
@@ -61,11 +61,24 @@ module OAuthenticator
61
61
  # the response for an unauthenticated request. the argument will be a hash with the key 'errors', whose
62
62
  # value is a hash with string keys indicating attributes with errors, and values being arrays of strings
63
63
  # indicating error messages on the attribute key..
64
- def unauthenticated_response(error_object)
64
+ def unauthenticated_response(errors)
65
65
  # default to a blank realm, I suppose
66
66
  realm = @options[:realm] || ''
67
67
  response_headers = {"WWW-Authenticate" => %Q(OAuth realm="#{realm}"), 'Content-Type' => 'application/json'}
68
- [401, response_headers, [JSON.pretty_generate(error_object)]]
68
+
69
+ body = {'errors' => errors}
70
+ error_message = begin
71
+ error_values = errors.values.inject([], &:+)
72
+ if error_values.size <= 1
73
+ error_values.first
74
+ else
75
+ # sentencify with periods
76
+ error_values.map { |v| v =~ /\.\s*\z/ ? v : v + '.' }.join(' ')
77
+ end
78
+ end
79
+ body['error_message'] = error_message if error_message
80
+
81
+ [401, response_headers, [JSON.pretty_generate(body)]]
69
82
  end
70
83
 
71
84
  # write a log entry regarding an unauthenticated request
@@ -69,10 +69,10 @@ module OAuthenticator
69
69
  required = %w(request_method uri media_type body)
70
70
  required += %w(signature_method consumer_key) unless @attributes['authorization']
71
71
  missing = required - @attributes.keys
72
- raise ArgumentError, "missing: #{missing.inspect}" if missing.any?
72
+ raise ArgumentError, "missing required attributes: #{missing.inspect}" if missing.any?
73
73
  other_recognized = PROTOCOL_PARAM_KEYS + %w(authorization consumer_secret token_secret realm hash_body?)
74
74
  extra = @attributes.keys - (required + other_recognized)
75
- raise ArgumentError, "received unrecognized @attributes: #{extra.inspect}" if extra.any?
75
+ raise ArgumentError, "received unrecognized attributes: #{extra.inspect}" if extra.any?
76
76
 
77
77
  if @attributes['authorization']
78
78
  # this means we are signing an existing request to validate the received signature. don't use defaults.
@@ -297,7 +297,7 @@ module OAuthenticator
297
297
  # @return [String]
298
298
  def rsa_sha1_signature
299
299
  private_key = OpenSSL::PKey::RSA.new(@attributes['consumer_secret'])
300
- Base64.encode64(private_key.sign(OpenSSL::Digest::SHA1.new, signature_base)).chomp.gsub(/\n/, '')
300
+ Base64.encode64(private_key.sign(OpenSSL::Digest::SHA1.new, signature_base)).gsub(/\n/, '')
301
301
  end
302
302
 
303
303
  # signature, with method HMAC-SHA1. section 3.4.2
@@ -306,7 +306,7 @@ module OAuthenticator
306
306
  def hmac_sha1_signature
307
307
  # hmac secret is same as plaintext signature
308
308
  secret = plaintext_signature
309
- Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, secret, signature_base)).chomp.gsub(/\n/, '')
309
+ Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, secret, signature_base)).gsub(/\n/, '')
310
310
  end
311
311
 
312
312
  # signature, with method plaintext. section 3.4.4
@@ -320,7 +320,7 @@ module OAuthenticator
320
320
  #
321
321
  # @return [String]
322
322
  def sha1_body_hash
323
- Base64.encode64(OpenSSL::Digest::SHA1.digest(read_body)).chomp.gsub(/\n/, '')
323
+ Base64.encode64(OpenSSL::Digest::SHA1.digest(read_body)).gsub(/\n/, '')
324
324
  end
325
325
 
326
326
  # map of oauth signature methods to their signature instance methods on this class
@@ -112,22 +112,22 @@ module OAuthenticator
112
112
  # timestamp
113
113
  if !timestamp?
114
114
  unless signature_method == 'PLAINTEXT'
115
- errors['Authorization oauth_timestamp'] << "is missing"
115
+ errors['Authorization oauth_timestamp'] << "Authorization oauth_timestamp is missing"
116
116
  end
117
117
  elsif timestamp !~ /\A\s*\d+\s*\z/
118
- errors['Authorization oauth_timestamp'] << "is not an integer - got: #{timestamp}"
118
+ errors['Authorization oauth_timestamp'] << "Authorization oauth_timestamp is not an integer - got: #{timestamp}"
119
119
  else
120
120
  timestamp_i = timestamp.to_i
121
121
  if timestamp_i < Time.now.to_i - timestamp_valid_past
122
- errors['Authorization oauth_timestamp'] << "is too old: #{timestamp}"
122
+ errors['Authorization oauth_timestamp'] << "Authorization oauth_timestamp is too old: #{timestamp}"
123
123
  elsif timestamp_i > Time.now.to_i + timestamp_valid_future
124
- errors['Authorization oauth_timestamp'] << "is too far in the future: #{timestamp}"
124
+ errors['Authorization oauth_timestamp'] << "Authorization oauth_timestamp is too far in the future: #{timestamp}"
125
125
  end
126
126
  end
127
127
 
128
128
  # oauth version
129
129
  if version? && version != '1.0'
130
- errors['Authorization oauth_version'] << "must be 1.0; got: #{version}"
130
+ errors['Authorization oauth_version'] << "Authorization oauth_version must be 1.0; got: #{version}"
131
131
  end
132
132
 
133
133
  # she's filled with secrets
@@ -135,11 +135,11 @@ module OAuthenticator
135
135
 
136
136
  # consumer / client application
137
137
  if !consumer_key?
138
- errors['Authorization oauth_consumer_key'] << "is missing"
138
+ errors['Authorization oauth_consumer_key'] << "Authorization oauth_consumer_key is missing"
139
139
  else
140
140
  secrets[:consumer_secret] = consumer_secret
141
141
  if !secrets[:consumer_secret]
142
- errors['Authorization oauth_consumer_key'] << 'is invalid'
142
+ errors['Authorization oauth_consumer_key'] << 'Authorization oauth_consumer_key is invalid'
143
143
  end
144
144
  end
145
145
 
@@ -147,32 +147,32 @@ module OAuthenticator
147
147
  if token?
148
148
  secrets[:token_secret] = token_secret
149
149
  if !secrets[:token_secret]
150
- errors['Authorization oauth_token'] << 'is invalid'
150
+ errors['Authorization oauth_token'] << 'Authorization oauth_token is invalid'
151
151
  elsif !token_belongs_to_consumer?
152
- errors['Authorization oauth_token'] << 'does not belong to the specified consumer'
152
+ errors['Authorization oauth_token'] << 'Authorization oauth_token does not belong to the specified consumer'
153
153
  end
154
154
  end
155
155
 
156
156
  # nonce
157
157
  if !nonce?
158
158
  unless signature_method == 'PLAINTEXT'
159
- errors['Authorization oauth_nonce'] << "is missing"
159
+ errors['Authorization oauth_nonce'] << "Authorization oauth_nonce is missing"
160
160
  end
161
161
  elsif nonce_used?
162
- errors['Authorization oauth_nonce'] << "has already been used"
162
+ errors['Authorization oauth_nonce'] << "Authorization oauth_nonce has already been used"
163
163
  end
164
164
 
165
165
  # signature method
166
166
  if !signature_method?
167
- errors['Authorization oauth_signature_method'] << "is missing"
167
+ errors['Authorization oauth_signature_method'] << "Authorization oauth_signature_method is missing"
168
168
  elsif !allowed_signature_methods.any? { |sm| signature_method.downcase == sm.downcase }
169
- errors['Authorization oauth_signature_method'] << "must be one of " +
169
+ errors['Authorization oauth_signature_method'] << "Authorization oauth_signature_method must be one of " +
170
170
  "#{allowed_signature_methods.join(', ')}; got: #{signature_method}"
171
171
  end
172
172
 
173
173
  # signature
174
174
  if !signature?
175
- errors['Authorization oauth_signature'] << "is missing"
175
+ errors['Authorization oauth_signature'] << "Authorization oauth_signature is missing"
176
176
  end
177
177
 
178
178
  signable_request = SignableRequest.new(@attributes.merge(secrets).merge('authorization' => oauth_header_params))
@@ -189,21 +189,21 @@ module OAuthenticator
189
189
  if body_hash == signable_request.body_hash
190
190
  # all good
191
191
  else
192
- errors['Authorization oauth_body_hash'] << "is invalid"
192
+ errors['Authorization oauth_body_hash'] << "Authorization oauth_body_hash is invalid"
193
193
  end
194
194
  else
195
195
  # received a body hash with plaintext. weird situation - we will ignore it; signature will not
196
196
  # be verified but it will be a part of the signature.
197
197
  end
198
198
  else
199
- errors['Authorization oauth_body_hash'] << "must not be included with form-encoded requests"
199
+ errors['Authorization oauth_body_hash'] << "Authorization oauth_body_hash must not be included with form-encoded requests"
200
200
  end
201
201
  else
202
202
  # allowed?
203
203
  if !signable_request.form_encoded?
204
204
  # required?
205
205
  if body_hash_required?
206
- errors['Authorization oauth_body_hash'] << "is required (on non-form-encoded requests)"
206
+ errors['Authorization oauth_body_hash'] << "Authorization oauth_body_hash is required (on non-form-encoded requests)"
207
207
  else
208
208
  # okay - not supported by client, but allowed
209
209
  end
@@ -216,14 +216,14 @@ module OAuthenticator
216
216
 
217
217
  # proceed to check signature
218
218
  unless self.signature == signable_request.signature
219
- throw(:errors, {'Authorization oauth_signature' => ['is invalid']})
219
+ throw(:errors, {'Authorization oauth_signature' => ['Authorization oauth_signature is invalid']})
220
220
  end
221
221
 
222
222
  if nonce?
223
223
  begin
224
224
  use_nonce!
225
225
  rescue NonceUsedError
226
- throw(:errors, {'Authorization oauth_nonce' => ['has already been used']})
226
+ throw(:errors, {'Authorization oauth_nonce' => ['Authorization oauth_nonce has already been used']})
227
227
  end
228
228
  end
229
229
 
@@ -1,5 +1,5 @@
1
1
  # OAuthenticator
2
2
  module OAuthenticator
3
3
  # OAuthenticator::VERSION
4
- VERSION = "1.2.0"
4
+ VERSION = "1.3.0"
5
5
  end
metadata CHANGED
@@ -1,133 +1,196 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: oauthenticator
3
- version: !ruby/object:Gem::Version
4
- version: 1.2.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Ethan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2014-06-25 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+ date: 2014-11-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
15
14
  name: rack
16
- prerelease: false
17
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: "1.4"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
22
20
  type: :runtime
23
- version_requirements: *id001
24
- - !ruby/object:Gem::Dependency
25
- name: json
26
21
  prerelease: false
27
- requirement: &id002 !ruby/object:Gem::Requirement
28
- requirements:
29
- - - ~>
30
- - !ruby/object:Gem::Version
31
- version: "1.8"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
32
34
  type: :runtime
33
- version_requirements: *id002
34
- - !ruby/object:Gem::Dependency
35
- name: faraday
36
35
  prerelease: false
37
- requirement: &id003 !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ~>
40
- - !ruby/object:Gem::Version
41
- version: "0.9"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.9'
42
48
  type: :runtime
43
- version_requirements: *id003
44
- - !ruby/object:Gem::Dependency
45
- name: addressable
46
49
  prerelease: false
47
- requirement: &id004 !ruby/object:Gem::Requirement
48
- requirements:
49
- - - ~>
50
- - !ruby/object:Gem::Version
51
- version: "2.3"
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: addressable
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.3'
52
62
  type: :runtime
53
- version_requirements: *id004
54
- - !ruby/object:Gem::Dependency
55
- name: rake
56
63
  prerelease: false
57
- requirement: &id005 !ruby/object:Gem::Requirement
58
- requirements:
59
- - &id006
60
- - ">="
61
- - !ruby/object:Gem::Version
62
- version: "0"
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
63
76
  type: :development
64
- version_requirements: *id005
65
- - !ruby/object:Gem::Dependency
66
- name: minitest
67
77
  prerelease: false
68
- requirement: &id007 !ruby/object:Gem::Requirement
69
- requirements:
70
- - *id006
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
71
90
  type: :development
72
- version_requirements: *id007
73
- - !ruby/object:Gem::Dependency
74
- name: minitest-reporters
75
91
  prerelease: false
76
- requirement: &id008 !ruby/object:Gem::Requirement
77
- requirements:
78
- - *id006
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: minitest-reporters
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
79
104
  type: :development
80
- version_requirements: *id008
81
- - !ruby/object:Gem::Dependency
82
- name: rack-test
83
105
  prerelease: false
84
- requirement: &id009 !ruby/object:Gem::Requirement
85
- requirements:
86
- - *id006
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rack-test
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
87
118
  type: :development
88
- version_requirements: *id009
89
- - !ruby/object:Gem::Dependency
90
- name: timecop
91
119
  prerelease: false
92
- requirement: &id010 !ruby/object:Gem::Requirement
93
- requirements:
94
- - *id006
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: timecop
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
95
132
  type: :development
96
- version_requirements: *id010
97
- - !ruby/object:Gem::Dependency
98
- name: simplecov
99
133
  prerelease: false
100
- requirement: &id011 !ruby/object:Gem::Requirement
101
- requirements:
102
- - *id006
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
103
146
  type: :development
104
- version_requirements: *id011
105
- - !ruby/object:Gem::Dependency
106
- name: api_hammer
107
147
  prerelease: false
108
- requirement: &id012 !ruby/object:Gem::Requirement
109
- requirements:
110
- - *id006
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: api_hammer
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
111
160
  type: :development
112
- version_requirements: *id012
113
- - !ruby/object:Gem::Dependency
114
- name: yard
115
161
  prerelease: false
116
- requirement: &id013 !ruby/object:Gem::Requirement
117
- requirements:
118
- - *id006
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: yard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
119
174
  type: :development
120
- version_requirements: *id013
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
121
181
  description: OAuthenticator signs and authenticates OAuth 1.0 requests
122
- email:
182
+ email:
123
183
  - ethan@unth
124
184
  executables: []
125
-
126
185
  extensions: []
127
-
128
186
  extra_rdoc_files: []
129
-
130
- files:
187
+ files:
188
+ - ".simplecov"
189
+ - ".yardopts"
190
+ - CHANGELOG.md
191
+ - LICENSE.txt
192
+ - README.md
193
+ - Rakefile.rb
131
194
  - lib/oauthenticator.rb
132
195
  - lib/oauthenticator/config_methods.rb
133
196
  - lib/oauthenticator/faraday_signer.rb
@@ -137,11 +200,6 @@ files:
137
200
  - lib/oauthenticator/signable_request.rb
138
201
  - lib/oauthenticator/signed_request.rb
139
202
  - lib/oauthenticator/version.rb
140
- - .yardopts
141
- - LICENSE.txt
142
- - CHANGELOG.md
143
- - README.md
144
- - Rakefile.rb
145
203
  - test/config_methods_test.rb
146
204
  - test/faraday_signer_test.rb
147
205
  - test/helper.rb
@@ -151,31 +209,31 @@ files:
151
209
  - test/signable_request_test.rb
152
210
  - test/signed_request_test.rb
153
211
  - test/test_config_methods.rb
154
- - .simplecov
155
212
  homepage: https://github.com/notEthan/oauthenticator
156
- licenses:
213
+ licenses:
157
214
  - MIT
158
215
  metadata: {}
159
-
160
216
  post_install_message:
161
217
  rdoc_options: []
162
-
163
- require_paths:
218
+ require_paths:
164
219
  - lib
165
- required_ruby_version: !ruby/object:Gem::Requirement
166
- requirements:
167
- - *id006
168
- required_rubygems_version: !ruby/object:Gem::Requirement
169
- requirements:
170
- - *id006
220
+ required_ruby_version: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ required_rubygems_version: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
171
230
  requirements: []
172
-
173
231
  rubyforge_project:
174
- rubygems_version: 2.0.14
232
+ rubygems_version: 2.2.2
175
233
  signing_key:
176
234
  specification_version: 4
177
235
  summary: OAuth 1.0 request signing and authentication
178
- test_files:
236
+ test_files:
179
237
  - test/config_methods_test.rb
180
238
  - test/faraday_signer_test.rb
181
239
  - test/helper.rb
@@ -185,4 +243,5 @@ test_files:
185
243
  - test/signable_request_test.rb
186
244
  - test/signed_request_test.rb
187
245
  - test/test_config_methods.rb
188
- - .simplecov
246
+ - ".simplecov"
247
+ has_rdoc: