oauth 0.5.10 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -2
  3. data/README.md +60 -55
  4. data/SECURITY.md +7 -9
  5. data/bin/oauth +8 -4
  6. data/lib/oauth/cli/authorize_command.rb +58 -54
  7. data/lib/oauth/cli/base_command.rb +163 -159
  8. data/lib/oauth/cli/help_command.rb +9 -5
  9. data/lib/oauth/cli/query_command.rb +26 -17
  10. data/lib/oauth/cli/sign_command.rb +58 -52
  11. data/lib/oauth/cli/version_command.rb +8 -4
  12. data/lib/oauth/cli.rb +2 -0
  13. data/lib/oauth/client/action_controller_request.rb +4 -1
  14. data/lib/oauth/client/em_http.rb +3 -1
  15. data/lib/oauth/client/helper.rb +76 -72
  16. data/lib/oauth/client/net_http.rb +111 -104
  17. data/lib/oauth/client.rb +2 -0
  18. data/lib/oauth/consumer.rb +50 -32
  19. data/lib/oauth/errors/error.rb +2 -0
  20. data/lib/oauth/errors/problem.rb +3 -0
  21. data/lib/oauth/errors/unauthorized.rb +4 -0
  22. data/lib/oauth/errors.rb +2 -0
  23. data/lib/oauth/helper.rb +9 -5
  24. data/lib/oauth/oauth.rb +4 -2
  25. data/lib/oauth/oauth_test_helper.rb +2 -0
  26. data/lib/oauth/request_proxy/base.rb +4 -4
  27. data/lib/oauth/request_proxy/mock_request.rb +1 -1
  28. data/lib/oauth/request_proxy/net_http.rb +8 -8
  29. data/lib/oauth/request_proxy/rest_client_request.rb +4 -3
  30. data/lib/oauth/request_proxy.rb +4 -1
  31. data/lib/oauth/server.rb +8 -4
  32. data/lib/oauth/signature/base.rb +73 -65
  33. data/lib/oauth/signature/hmac/sha1.rb +15 -9
  34. data/lib/oauth/signature/hmac/sha256.rb +15 -9
  35. data/lib/oauth/signature/plaintext.rb +18 -20
  36. data/lib/oauth/signature/rsa/sha1.rb +46 -38
  37. data/lib/oauth/signature.rb +3 -0
  38. data/lib/oauth/token.rb +2 -0
  39. data/lib/oauth/tokens/access_token.rb +2 -0
  40. data/lib/oauth/tokens/consumer_token.rb +2 -0
  41. data/lib/oauth/tokens/request_token.rb +5 -2
  42. data/lib/oauth/tokens/server_token.rb +2 -0
  43. data/lib/oauth/tokens/token.rb +2 -0
  44. data/lib/oauth/version.rb +5 -1
  45. data/lib/oauth.rb +8 -2
  46. metadata +45 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8b32f6236156240692af164df90d283aa768dd2f0f6e2a08c6a4c39d396f824
4
- data.tar.gz: 4c6a5f53fd4417683198af1371938358e8808ff1f9fcad0d2e4e2af5e4233f4a
3
+ metadata.gz: 4bbf3f3a460e4b7cd04184248e8321897a3b6b1e7d7b46803f943fffdd512543
4
+ data.tar.gz: 6aec1401ce4db1d54b643a11aeab44604a46382151bcd43ba19914fbc0b7d705
5
5
  SHA512:
6
- metadata.gz: d0fb04a980ad2d4ae5de14d2c6a119966b5c315a1c4738678a2040db360e6c452545c3585d718e5668389f0c183af610f7e18dc3cdc710b7b3ecc33bea419a0a
7
- data.tar.gz: 7820c639c056aca51781fcf0a73d65c7f3a9c9032af95413024d713f80078f5b12d2d1949e3b1aec8feaf87058c5dc40eaf2dbc6a735da070a683307affed1ad
6
+ metadata.gz: 3df8309921280baa7577d3fcc5417c2408cd9b97c90f68ecb871a3ae3d7d42f7374417ca2a4d0002ef3a1a25325d16b7d3cdec52c771e78711e13dcfbd86309c
7
+ data.tar.gz: 0b36611a495fde3b0ec4116486a0d9122d2ab336681704d5baeebbb7cdd68710b420c98196c84d6ab43940beec662ec6d563dd799bea6117b4c3e58a854d16b3
data/CHANGELOG.md CHANGED
@@ -13,6 +13,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
13
13
 
14
14
  ### Removed
15
15
 
16
+ ## [0.6.0] 2022-08-23
17
+ ### Added
18
+ * New option `body_hash_enabled` which defaults to true to maintain backward compatibility with prior releases. Setting to `false` disables generation of a `oauth_body_hash` component as part of the signature computation.
19
+ * Improved documentation of support policy via Tidelift
20
+ * Stop testing against active_support v2
21
+
22
+ ### Changed
23
+ * Utilize version_gem extracted from oauth2 gem for VERSION
24
+ * Added new `OAuth::Version` namespace
25
+ * VERSION constant now at `OAuth::Version::VERSION`
26
+
27
+ ### Removed
28
+ * Ruby 2.0, 2.1, 2.2, and 2.3 are no longer valid install targets
29
+
16
30
  ## [0.5.10] 2022-05-04
17
31
  The "Can it be the end of the line for 0.5.x?" Release
18
32
 
@@ -288,7 +302,7 @@ The "Can it be the end of the line for 0.5.x?" Release
288
302
 
289
303
  ## [0.3.4] 2009-05-06
290
304
  ### Changed
291
- * OAuth::Client::Helper uses OAuth::VERSION (chadisfaction)
305
+ * OAuth::Client::Helper uses OAuth::Version::VERSION (chadisfaction)
292
306
 
293
307
  ### Fixed
294
308
  * Fix OAuth::RequestProxy::ActionControllerRequest's handling of params (Tristan Groléat)
@@ -386,7 +400,8 @@ but please have a look at the unit tests.
386
400
  * Moved all non-Rails functionality from the Rails plugin:
387
401
  http://code.google.com/p/oauth-plugin/
388
402
 
389
- [Unreleased]: https://github.com/oauth-xx/oauth-ruby/compare/v0.5.10...v0.5-maintenance
403
+ [Unreleased]: https://github.com/oauth-xx/oauth-ruby/compare/v0.6.0...v0.6-maintenance
404
+ [0.6.0]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.6.0
390
405
  [0.5.10]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.5.10
391
406
  [0.5.9]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.5.9
392
407
  [0.5.8]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.5.8
data/README.md CHANGED
@@ -20,10 +20,6 @@ See the sibling `oauth2` gem for OAuth 2.0 implementations in Ruby.
20
20
  [oauth1-spec]: http://oauth.net/core/1.0/
21
21
  [sibling-gem]: https://github.com/oauth-xx/oauth-ruby
22
22
 
23
- **NOTE**
24
-
25
- This README, on branch `v0.5-maintenance`, targets 0.5.x series releases. For later releases please see the `master` branch README.
26
-
27
23
  ## Status
28
24
 
29
25
  <!--
@@ -57,11 +53,11 @@ appended indicators:
57
53
  |:----|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
58
54
  | 1️⃣ | name, license, docs | [![RubyGems.org][⛳️name-img]][⛳️gem] [![License: MIT][🖇src-license-img]][🖇src-license] [![FOSSA][🏘fossa-img]][🏘fossa] [![RubyDoc.info][🚎yard-img]][🚎yard] [![InchCI][🖐inch-ci-img]][🚎yard] |
59
55
  | 2️⃣ | version & activity | [![Gem Version][⛳️version-img]][⛳️gem] [![Total Downloads][🖇DL-total-img]][⛳️gem] [![Download Rank][🏘DL-rank-img]][⛳️gem] [![Source Code][🚎src-home-img]][🚎src-home] [![Open PRs][🖐prs-o-img]][🖐prs-o] [![Closed PRs][🧮prs-c-img]][🧮prs-c] <!--[![Next Version][📗next-img]][📗next]--> |
60
- | 3️⃣ | maintanence & linting | [![Maintainability][⛳cclim-maint-img♻️]][⛳cclim-maint] [![Helpers][🖇triage-help-img]][🖇triage-help] [![Depfu][🏘depfu-img♻️]][🏘depfu♻️] [![Contributors][🚎contributors-img]][🚎contributors] [![Style][🖐style-wf-img]][🖐style-wf] [![Kloc Roll][🧮kloc-img]][🧮kloc] |
56
+ | 3️⃣ | maintenance & linting | [![Maintainability][⛳cclim-maint-img♻️]][⛳cclim-maint] [![Helpers][🖇triage-help-img]][🖇triage-help] [![Depfu][🏘depfu-img♻️]][🏘depfu♻️] [![Contributors][🚎contributors-img]][🚎contributors] [![Style][🖐style-wf-img]][🖐style-wf] [![Kloc Roll][🧮kloc-img]][🧮kloc] |
61
57
  | 4️⃣ | testing | [![Open Issues][⛳iss-o-img]][⛳iss-o] [![Closed Issues][🖇iss-c-img]][🖇iss-c] [![Supported][🏘sup-wf-img]][🏘sup-wf] [![Heads][🚎heads-wf-img]][🚎heads-wf] [![Unofficial Support][🖐uns-wf-img]][🖐uns-wf] [![MacOS][🧮mac-wf-img]][🧮mac-wf] [![Windows][📗win-wf-img]][📗win-wf] |
62
58
  | 5️⃣ | coverage & security | [![CodeClimate][⛳cclim-cov-img♻️]][⛳cclim-cov] [![CodeCov][🖇codecov-img♻️]][🖇codecov] [![Coveralls][🏘coveralls-img]][🏘coveralls] [![Security Policy][🚎sec-pol-img]][🚎sec-pol] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Code Coverage][🧮cov-wf-img]][🧮cov-wf] |
63
59
  | 6️⃣ | resources | [![Discussion][⛳gh-discussions-img]][⛳gh-discussions] [![Get help on Codementor][🖇codementor-img]][🖇codementor] [![Chat][🏘chat-img]][🏘chat] [![Blog][🚎blog-img]][🚎blog] [![Blog][🖐wiki-img]][🖐wiki] |
64
- | 7️⃣ | spread 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Tweet @ Peter][🏘tweet-img]][🏘tweet] [🌏][aboutme] [👼][angelme] [💻][coderme] [🌹][politicme] |
60
+ | 7️⃣ | spread 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Tweet @ Peter][🏘tweet-img]][🏘tweet] [🌏][aboutme] [👼][angelme] [💻][coderme] |
65
61
 
66
62
  <!--
67
63
  The link tokens in the following sections should be kept ordered by the row and badge numbering scheme
@@ -124,10 +120,10 @@ The link tokens in the following sections should be kept ordered by the row and
124
120
  <!-- 5️⃣ coverage & security -->
125
121
  [⛳cclim-cov]: https://codeclimate.com/github/oauth-xx/oauth-ruby/test_coverage
126
122
  [⛳cclim-cov-img♻️]: https://api.codeclimate.com/v1/badges/3cf23270c21e8791d788/test_coverage
127
- [🖇codecov-img♻️]: https://codecov.io/gh/oauth-xx/oauth-ruby/branch/v0.5-maintenance/graph/badge.svg?token=4ZNAWNxrf9
123
+ [🖇codecov-img♻️]: https://codecov.io/gh/oauth-xx/oauth-ruby/branch/master/graph/badge.svg?token=4ZNAWNxrf9
128
124
  [🖇codecov]: https://codecov.io/gh/oauth-xx/oauth-ruby
129
- [🏘coveralls]: https://coveralls.io/github/oauth-xx/oauth-ruby?branch=v0.5-maintenance
130
- [🏘coveralls-img]: https://coveralls.io/repos/github/oauth-xx/oauth-ruby/badge.svg?branch=v0.5-maintenance
125
+ [🏘coveralls]: https://coveralls.io/github/oauth-xx/oauth-ruby?branch=master
126
+ [🏘coveralls-img]: https://coveralls.io/repos/github/oauth-xx/oauth-ruby/badge.svg?branch=master
131
127
  [🚎sec-pol]: https://github.com/oauth-xx/oauth-ruby/blob/master/SECURITY.md
132
128
  [🚎sec-pol-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
133
129
  [🖐codeQL]: https://github.com/oauth-xx/oauth-ruby/security/code-scanning
@@ -158,11 +154,6 @@ The link tokens in the following sections should be kept ordered by the row and
158
154
  <!-- Maintainer Contact Links -->
159
155
  [railsbling]: http://www.railsbling.com
160
156
  [peterboling]: http://www.peterboling.com
161
- [aboutme]: https://about.me/peter.boling
162
- [angelme]: https://angel.co/peter-boling
163
- [coderme]:http://coderwall.com/pboling
164
- [politicme]: https://nationalprogressiveparty.org
165
-
166
157
 
167
158
  ## Installation
168
159
 
@@ -190,19 +181,19 @@ For more see [SECURITY.md][🚎sec-pol].
190
181
  ## Compatibility
191
182
 
192
183
  Targeted ruby compatibility is non-EOL versions of Ruby, currently 2.7, 3.0, and
193
- 3.1. Ruby is limited to 2.0+ in the gemspec on this `v0.5-maintenance` branch, and
194
- this will change with minor version bumps, while the gem is still in 0.x,
195
- in accordance with the SemVer spec.
184
+ 3.1. Ruby is limited to 2.4+ in the gemspec, and this will change with minor version bumps,
185
+ while the gem is still in 0.x, in accordance with the SemVer spec.
196
186
 
197
- The `master` branch now targets 0.6.x releases.
198
- See `v0.5-maintenance` branch for older rubies.
187
+ The `master` branch now targets 1.0.x releases.
188
+ See `v0.6-maintenance` branch for Ruby >= 2.4.
189
+ See `v0.5-maintenance` branch for Ruby >= 2.0.
199
190
 
200
191
  NOTE: If there is another 0.5.x release it is anticipated to be the last of the 0.5.x series.
201
192
 
202
193
  <details>
203
194
  <summary>Ruby Engine Compatibility Policy</summary>
204
195
 
205
- This gem is tested against MRI, JRuby, and Truffleruby.
196
+ This gem is tested against MRI, and to a lesser extent, against JRuby, and Truffleruby.
206
197
  Each of those has varying versions that target a specific version of MRI Ruby.
207
198
  This gem should work in the just-listed Ruby engines according to the targeted MRI compatibility in the table below.
208
199
  If you would like to add support for additional engines,
@@ -227,66 +218,82 @@ fashion. If critical issues for a particular implementation exist at the time
227
218
  of a major release, support for that Ruby version may be dropped.
228
219
  </details>
229
220
 
230
- | | Ruby OAuth Version | Maintenance Branch | Supported Officially | Supported Unofficially | Supported Incidentally |
231
- |:----|--------------------|--------------------|----------------------|------------------------------|------------------------|
232
- | 1️⃣ | 0.6.x (unreleased) | `master` | 2.7, 3.0, 3.1 | 2.5, 2.6 | 2.4 |
233
- | 2️⃣ | 0.5.x | `v0.5-maintenance` | 2.7, 3.0, 3.1 | 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 | 2.0 |
234
- | 3️⃣ | older | N/A | Best of luck to you! | Please upgrade! | |
221
+ | | Ruby OAuth Version | Maintenance Branch | 🚂 Compatibility | Official 💎 | Unofficial 💎 | Incidental 💎 |
222
+ |:----|--------------------|--------------------|------------------------|----------------------|------------------------------|---------------|
223
+ | 1️⃣ | 1.0.x | `master` | Rails 6, 7 | 2.7, 3.0, 3.1 | sorry, not sorry | nope |
224
+ | 2️⃣ | 0.6.x | `v0.6-maintenance` | Rails 5, 6, 7 | 2.7, 3.0, 3.1 | 2.5, 2.6 | 2.4 |
225
+ | 3️⃣ | 0.5.x | `v0.5-maintenance` | Rails 2, 3, 4, 5, 6, 7 | 2.7, 3.0, 3.1 | 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 | 2.0 |
226
+ | 4️⃣ | older | N/A | | Best of luck to you! | Please upgrade! | noop |
235
227
 
236
228
  NOTE: Once 1.0 is released, the 0.x series will only receive critical bug and security updates.
237
229
  See [SECURITY.md][🚎sec-pol]
238
230
 
231
+ 🚂 NOTE: See notes on Rails in next section.
232
+
239
233
  ## Basics
240
234
 
241
235
  This is a ruby library which is intended to be used in creating Ruby Consumer
242
236
  and Service Provider applications. It is NOT a Rails plugin, but could easily
243
237
  be used for the foundation for such a Rails plugin.
244
238
 
245
- As a matter of fact it has been pulled out from an OAuth Rails GEM
246
- (https://rubygems.org/gems/oauth-plugin https://github.com/pelle/oauth-plugin)
247
- which now uses this gem as a dependency.
239
+ This gem was originally extracted from @pelle's [oauth-plugin](https://github.com/pelle/oauth-plugin)
240
+ gem. After extraction that gem was made to depend on this gem.
241
+
242
+ Unfortunately, this gem does have some Rails related bits that are
243
+ **optional** to load. You don't need Rails! The Rails bits may be pulled out
244
+ into a separate gem after the release of version 1.0 of this gem.
248
245
 
249
246
  ## Usage
250
247
 
251
- We need to specify the oauth_callback url explicitly, otherwise it defaults to
248
+ We need to specify the `oauth_callback` url explicitly, otherwise it defaults to
252
249
  "oob" (Out of Band)
253
250
 
254
- callback_url = "http://127.0.0.1:3000/oauth/callback"
251
+ ```ruby
252
+ callback_url = "http://127.0.0.1:3000/oauth/callback"
253
+ ```
255
254
 
256
255
  Create a new `OAuth::Consumer` instance by passing it a configuration hash:
257
256
 
258
- oauth_consumer = OAuth::Consumer.new("key", "secret", :site => "https://agree2")
257
+ ```ruby
258
+ oauth_consumer = OAuth::Consumer.new("key", "secret", site: "https://agree2")
259
+ ```
259
260
 
260
261
  Start the process by requesting a token
261
262
 
262
- request_token = oauth_consumer.get_request_token(:oauth_callback => callback_url)
263
+ ```ruby
264
+ request_token = oauth_consumer.get_request_token(oauth_callback: callback_url)
263
265
 
264
- session[:token] = request_token.token
265
- session[:token_secret] = request_token.secret
266
- redirect_to request_token.authorize_url(:oauth_callback => callback_url)
266
+ session[:token] = request_token.token
267
+ session[:token_secret] = request_token.secret
268
+ redirect_to request_token.authorize_url(oauth_callback: callback_url)
269
+ ```
267
270
 
268
271
  When user returns create an access_token
269
272
 
270
- hash = { oauth_token: session[:token], oauth_token_secret: session[:token_secret]}
271
- request_token = OAuth::RequestToken.from_hash(oauth_consumer, hash)
272
- access_token = request_token.get_access_token
273
- # For 3-legged authorization, flow oauth_verifier is passed as param in callback
274
- # access_token = request_token.get_access_token(oauth_verifier: params[:oauth_verifier])
275
- @photos = access_token.get('/photos.xml')
273
+ ```ruby
274
+ hash = { oauth_token: session[:token], oauth_token_secret: session[:token_secret] }
275
+ request_token = OAuth::RequestToken.from_hash(oauth_consumer, hash)
276
+ access_token = request_token.get_access_token
277
+ # For 3-legged authorization, flow oauth_verifier is passed as param in callback
278
+ # access_token = request_token.get_access_token(oauth_verifier: params[:oauth_verifier])
279
+ @photos = access_token.get("/photos.xml")
280
+ ```
276
281
 
277
282
  Now that you have an access token, you can use Typhoeus to interact with the
278
283
  OAuth provider if you choose.
279
284
 
280
- require 'typhoeus'
281
- require 'oauth/request_proxy/typhoeus_request'
282
- oauth_params = {:consumer => oauth_consumer, :token => access_token}
283
- hydra = Typhoeus::Hydra.new
284
- req = Typhoeus::Request.new(uri, options) # :method needs to be specified in options
285
- oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(:request_uri => uri))
286
- req.options[:headers].merge!({"Authorization" => oauth_helper.header}) # Signs the request
287
- hydra.queue(req)
288
- hydra.run
289
- @response = req.response
285
+ ```ruby
286
+ require "typhoeus"
287
+ require "oauth/request_proxy/typhoeus_request"
288
+ oauth_params = { consumer: oauth_consumer, token: access_token }
289
+ hydra = Typhoeus::Hydra.new
290
+ req = Typhoeus::Request.new(uri, options) # :method needs to be specified in options
291
+ oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(request_uri: uri))
292
+ req.options[:headers]["Authorization"] = oauth_helper.header # Signs the request
293
+ hydra.queue(req)
294
+ hydra.run
295
+ @response = req.response
296
+ ```
290
297
 
291
298
  ## More Information
292
299
 
@@ -314,13 +321,12 @@ immediately released that restores compatibility. Breaking changes to the public
314
321
  major versions. Compatibility with a major and minor versions of Ruby will only be changed with a major version bump.
315
322
 
316
323
  As a result of this policy, you can (and should) specify a dependency on this gem using
317
- the [Pessimistic Version Constraint][pvc] with two digits of precision once it hits a 1.0 release.
318
- While on 0.x releases three digits of precision should be used.
324
+ the [Pessimistic Version Constraint][pvc] with two digits of precision.
319
325
 
320
326
  For example:
321
327
 
322
328
  ```ruby
323
- spec.add_dependency "oauth", "~> 0.5.9"
329
+ spec.add_dependency "oauth", "~> 0.6.0"
324
330
  ```
325
331
 
326
332
  ## License
@@ -364,7 +370,6 @@ Comments are welcome. Contact the [OAuth Ruby mailing list (Google Group)][maili
364
370
  [license]: https://github.com/oauth-xx/oauth-ruby/blob/master/LICENSE
365
371
  [license-ref]: https://opensource.org/licenses/MIT
366
372
  [liberapay_donate]: https://liberapay.com/pboling/donate
367
- [politicme]: https://nationalprogressiveparty.org
368
373
  [pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
369
374
  [rubygems]: https://rubygems.org/gems/oauth
370
375
  [security]: https://github.com/oauth-xx/oauth-ruby/blob/master/SECURITY.md
data/SECURITY.md CHANGED
@@ -2,15 +2,13 @@
2
2
 
3
3
  ## Supported Versions
4
4
 
5
- | Version | Supported |
6
- | ------- | ------------------ |
7
- | 0.7.x | :white_check_mark: |
8
- | 0.6.x | :white_check_mark: |
9
- | 0.5.x | :white_check_mark: |
10
- | <= 0.5 | :x: |
5
+ | Version | Supported |
6
+ |--------------------| ------------------ |
7
+ | 0.6.x (unreleased) | :white_check_mark: |
8
+ | 0.5.x | :white_check_mark: |
9
+ | <= 0.5 | :x: |
11
10
 
12
11
  ## Reporting a Vulnerability
13
12
 
14
- Peter Boling is the primary maintainer of the this gem. Please find a way to [contact him directly][contact] to report the issue. Include as much relevant information as possible.
15
-
16
- [contact]: https://railsbling.com/contact
13
+ To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security).
14
+ Tidelift will coordinate the fix and disclosure.
data/bin/oauth CHANGED
@@ -1,11 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require_relative "../lib/oauth"
4
+ require "oauth"
4
5
  require "oauth/cli"
5
6
 
6
- Signal.trap("INT") { puts; exit(1) } # don't dump a backtrace on a ^C
7
-
7
+ # don't dump a backtrace on a ^C
8
+ Signal.trap("INT") do
9
+ puts
10
+ exit(1)
11
+ end
8
12
  ARGV << "help" if ARGV.empty?
9
13
  command = ARGV.shift
10
14
 
11
- OAuth::CLI.new(STDOUT, STDIN, STDERR, command, ARGV).run
15
+ OAuth::CLI.new($stdout, $stdin, $stderr, command, ARGV).run
@@ -1,69 +1,73 @@
1
- class OAuth::CLI
2
- class AuthorizeCommand < BaseCommand
3
- def required_options
4
- [:uri]
5
- end
6
-
7
- def _run
8
- request_token = get_request_token
1
+ # frozen_string_literal: true
9
2
 
10
- if request_token.callback_confirmed?
11
- puts "Server appears to support OAuth 1.0a; enabling support."
12
- options[:version] = "1.0a"
3
+ module OAuth
4
+ class CLI
5
+ class AuthorizeCommand < BaseCommand
6
+ def required_options
7
+ [:uri]
13
8
  end
14
9
 
15
- puts "Please visit this url to authorize:"
16
- puts request_token.authorize_url
10
+ def _run
11
+ request_token = get_request_token
17
12
 
18
- # parameters for OAuth 1.0a
19
- oauth_verifier = ask_user_for_verifier
13
+ if request_token.callback_confirmed?
14
+ puts "Server appears to support OAuth 1.0a; enabling support."
15
+ options[:version] = "1.0a"
16
+ end
20
17
 
21
- verbosely_get_access_token(request_token, oauth_verifier)
22
- end
18
+ puts "Please visit this url to authorize:"
19
+ puts request_token.authorize_url
23
20
 
24
- def get_request_token
25
- consumer = get_consumer
26
- scope_options = options[:scope] ? { "scope" => options[:scope] } : {}
27
- consumer.get_request_token({ oauth_callback: options[:oauth_callback] }, scope_options)
28
- rescue OAuth::Unauthorized => e
29
- alert "A problem occurred while attempting to authorize:"
30
- alert e
31
- alert e.request.body
32
- end
21
+ # parameters for OAuth 1.0a
22
+ oauth_verifier = ask_user_for_verifier
33
23
 
34
- def get_consumer
35
- OAuth::Consumer.new \
36
- options[:oauth_consumer_key],
37
- options[:oauth_consumer_secret],
38
- access_token_url: options[:access_token_url],
39
- authorize_url: options[:authorize_url],
40
- request_token_url: options[:request_token_url],
41
- scheme: options[:scheme],
42
- http_method: options[:method].to_s.downcase.to_sym
43
- end
24
+ verbosely_get_access_token(request_token, oauth_verifier)
25
+ end
44
26
 
45
- def ask_user_for_verifier
46
- if options[:version] == "1.0a"
47
- puts "Please enter the verification code provided by the SP (oauth_verifier):"
48
- @stdin.gets.chomp
49
- else
50
- puts "Press return to continue..."
51
- @stdin.gets
52
- nil
27
+ def get_request_token
28
+ consumer = get_consumer
29
+ scope_options = options[:scope] ? { "scope" => options[:scope] } : {}
30
+ consumer.get_request_token({ oauth_callback: options[:oauth_callback] }, scope_options)
31
+ rescue OAuth::Unauthorized => e
32
+ alert "A problem occurred while attempting to authorize:"
33
+ alert e
34
+ alert e.request.body
35
+ end
36
+
37
+ def get_consumer
38
+ OAuth::Consumer.new \
39
+ options[:oauth_consumer_key],
40
+ options[:oauth_consumer_secret],
41
+ access_token_url: options[:access_token_url],
42
+ authorize_url: options[:authorize_url],
43
+ request_token_url: options[:request_token_url],
44
+ scheme: options[:scheme],
45
+ http_method: options[:method].to_s.downcase.to_sym
46
+ end
47
+
48
+ def ask_user_for_verifier
49
+ if options[:version] == "1.0a"
50
+ puts "Please enter the verification code provided by the SP (oauth_verifier):"
51
+ @stdin.gets.chomp
52
+ else
53
+ puts "Press return to continue..."
54
+ @stdin.gets
55
+ nil
56
+ end
53
57
  end
54
- end
55
58
 
56
- def verbosely_get_access_token(request_token, oauth_verifier)
57
- access_token = request_token.get_access_token(oauth_verifier: oauth_verifier)
59
+ def verbosely_get_access_token(request_token, oauth_verifier)
60
+ access_token = request_token.get_access_token(oauth_verifier: oauth_verifier)
58
61
 
59
- puts "Response:"
60
- access_token.params.each do |k, v|
61
- puts " #{k}: #{v}" unless k.is_a?(Symbol)
62
+ puts "Response:"
63
+ access_token.params.each do |k, v|
64
+ puts " #{k}: #{v}" unless k.is_a?(Symbol)
65
+ end
66
+ rescue OAuth::Unauthorized => e
67
+ alert "A problem occurred while attempting to obtain an access token:"
68
+ alert e
69
+ alert e.request.body
62
70
  end
63
- rescue OAuth::Unauthorized => e
64
- alert "A problem occurred while attempting to obtain an access token:"
65
- alert e
66
- alert e.request.body
67
71
  end
68
72
  end
69
73
  end