oauth 1.1.5 → 1.1.6

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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +1 -4
  3. data/CHANGELOG.md +25 -1
  4. data/CITATION.cff +6 -6
  5. data/CODE_OF_CONDUCT.md +0 -0
  6. data/CONTRIBUTING.md +88 -34
  7. data/FUNDING.md +6 -9
  8. data/LICENSE.md +71 -0
  9. data/README.md +222 -166
  10. data/RUBOCOP.md +0 -0
  11. data/SECURITY.md +1 -4
  12. data/certs/pboling.pem +27 -0
  13. data/lib/oauth/auth_sanitizer.rb +0 -0
  14. data/lib/oauth/client/action_controller_request.rb +0 -0
  15. data/lib/oauth/client/em_http.rb +0 -0
  16. data/lib/oauth/client/helper.rb +0 -0
  17. data/lib/oauth/client/net_http.rb +0 -0
  18. data/lib/oauth/client.rb +0 -0
  19. data/lib/oauth/consumer.rb +68 -16
  20. data/lib/oauth/errors/error.rb +0 -0
  21. data/lib/oauth/errors/problem.rb +0 -0
  22. data/lib/oauth/errors/unauthorized.rb +0 -0
  23. data/lib/oauth/errors.rb +0 -0
  24. data/lib/oauth/helper.rb +0 -0
  25. data/lib/oauth/oauth.rb +0 -0
  26. data/lib/oauth/oauth_test_helper.rb +0 -0
  27. data/lib/oauth/optional.rb +0 -0
  28. data/lib/oauth/request_proxy/action_controller_request.rb +0 -0
  29. data/lib/oauth/request_proxy/action_dispatch_request.rb +0 -0
  30. data/lib/oauth/request_proxy/base.rb +0 -0
  31. data/lib/oauth/request_proxy/curb_request.rb +0 -0
  32. data/lib/oauth/request_proxy/em_http_request.rb +0 -0
  33. data/lib/oauth/request_proxy/jabber_request.rb +0 -0
  34. data/lib/oauth/request_proxy/mock_request.rb +0 -0
  35. data/lib/oauth/request_proxy/net_http.rb +0 -0
  36. data/lib/oauth/request_proxy/rack_request.rb +0 -0
  37. data/lib/oauth/request_proxy/rest_client_request.rb +0 -0
  38. data/lib/oauth/request_proxy/typhoeus_request.rb +0 -0
  39. data/lib/oauth/request_proxy.rb +0 -0
  40. data/lib/oauth/server.rb +0 -0
  41. data/lib/oauth/signature/base.rb +0 -0
  42. data/lib/oauth/signature/hmac/sha1.rb +0 -0
  43. data/lib/oauth/signature/hmac/sha256.rb +0 -0
  44. data/lib/oauth/signature/plaintext.rb +0 -0
  45. data/lib/oauth/signature/rsa/sha1.rb +0 -0
  46. data/lib/oauth/signature.rb +0 -0
  47. data/lib/oauth/token.rb +0 -0
  48. data/lib/oauth/tokens/access_token.rb +0 -0
  49. data/lib/oauth/tokens/consumer_token.rb +0 -0
  50. data/lib/oauth/tokens/request_token.rb +0 -0
  51. data/lib/oauth/tokens/server_token.rb +0 -0
  52. data/lib/oauth/tokens/token.rb +0 -0
  53. data/lib/oauth/version.rb +1 -1
  54. data/lib/oauth.rb +1 -0
  55. data/sig/oauth/consumer.rbs +0 -0
  56. data/sig/oauth/signature/base.rbs +0 -0
  57. data/sig/oauth/tokens/token.rbs +0 -0
  58. data/sig/oauth/version.rbs +6 -0
  59. data.tar.gz.sig +0 -0
  60. metadata +133 -108
  61. metadata.gz.sig +0 -0
  62. data/LICENSE.txt +0 -22
  63. data/REEK +0 -2
data/README.md CHANGED
@@ -1,17 +1,10 @@
1
- [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![oauth Logo by Chris Messina, CC BY-SA 3.0][🖼️oauth-i]][🖼️oauth]
1
+ <a href="https://github.com/ruby-oauth"><img alt="ruby-oauth Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/ruby-oauth/avatar-128px.svg" width="14%" align="right"/></a>
2
2
 
3
- [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
4
- [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
5
- [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
6
- [🖼️ruby-lang]: https://www.ruby-lang.org/
7
- [🖼️oauth-i]: https://logos.galtzo.com/assets/images/oauth/avatar-192px.svg
8
- [🖼️oauth]: https://github.com/ruby-oauth/oauth
3
+ # 🔑 OAuth
9
4
 
10
- # 🔑 Ruby OAuth 1.0 / 1.0a
5
+ [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
11
6
 
12
- [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
13
-
14
- `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
15
8
 
16
9
  ---
17
10
 
@@ -20,13 +13,13 @@
20
13
  [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
21
14
 
22
15
  <details>
23
- <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
24
17
 
25
18
  I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
26
19
 
27
20
  </details>
28
21
 
29
- ## 🌻 Synopsis
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
30
23
 
31
24
  OAuth 1.0a is an industry-standard protocol for authorization.
32
25
  It is an update to the original OAuth 1.0 protocol, and is used by many popular services.
@@ -74,43 +67,45 @@ The primary maintainer since 2020 is Peter Boling ([@pboling](https://github.com
74
67
 
75
68
  ## 💡 Info you can shake a stick at
76
69
 
77
- | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
70
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
78
71
  |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
79
- | Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
80
- | Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i] <br/> [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] |
81
- | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
82
- | Works with MRI Ruby 2 | [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
83
- | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
84
- | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
85
- | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
86
- | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![Compatible with Apache Software Projects: Verified by SkyWalking Eyes][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
87
- | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
88
- | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
89
- | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
72
+ | Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
73
+ | Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf]|
74
+ | Works with MRI Ruby 4 | [![Ruby 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
75
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
76
+ | Works with MRI Ruby 2 | ![Ruby 2.3 Compat][💎ruby-2.3i] <br/> [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
77
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
78
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
79
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
80
+ | Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
81
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
82
+ | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
83
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
90
84
 
91
85
  ### Compatibility
92
86
 
93
87
  Compatible with MRI Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby.
88
+ CI workflows and Appraisals are generated for MRI Ruby 2.4+.
89
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
90
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
91
+ not practical for the current toolchain.
94
92
 
95
- | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
93
+ | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
96
94
  |------------------------------------------------|--------------------------------------------------------|
97
- | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
95
+ | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
98
96
 
99
97
  ### Federated DVCS
100
98
 
101
- <details>
102
- <summary>Find this repo on federated forges</summary>
99
+ <details markdown="1">
100
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
103
101
 
104
- | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
102
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
105
103
  |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
106
- | 🧪 [ruby-oauth/oauth on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
107
- | 🧊 [ruby-oauth/oauth on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
108
- | 🐙 [ruby-oauth/oauth on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
109
- | 🤼 [OAuth Ruby Google Group][⛳gg-discussions] | "Active" | | | | | [💚][⛳gg-discussions] |
110
- | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
104
+ | 🧪 [ruby-oauth/oauth on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
105
+ | 🧊 [ruby-oauth/oauth on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
106
+ | 🐙 [ruby-oauth/oauth on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
107
+ | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
111
108
 
112
- [⛳gg-discussions]: https://groups.google.com/g/oauth-ruby
113
- [⛳gg-discussions-img]: https://img.shields.io/badge/google-group-0093D0.svg?style=for-the-badge&logo=google&logoColor=orange
114
109
  </details>
115
110
 
116
111
  [gh-discussions]: https://github.com/ruby-oauth/oauth/discussions
@@ -119,8 +114,8 @@ Compatible with MRI Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby
119
114
 
120
115
  Available as part of the Tidelift Subscription.
121
116
 
122
- <details>
123
- <summary>Need enterprise-level guarantees?</summary>
117
+ <details markdown="1">
118
+ <summary>Need enterprise-level guarantees?</summary>
124
119
 
125
120
  The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
126
121
 
@@ -152,47 +147,26 @@ If bundler is not being used to manage dependencies, install the gem by executin
152
147
  gem install oauth
153
148
  ```
154
149
 
155
- ### 🔒 Secure Installation
156
-
157
- <details>
158
- <summary>For Medium or High Security Installations</summary>
159
-
160
- This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
161
- [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
162
- by following the instructions below.
163
-
164
- Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
165
-
166
- ```console
167
- gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem)
168
- ```
169
-
170
- You only need to do that once. Then proceed to install with:
171
-
172
- ```console
173
- gem install oauth -P HighSecurity
174
- ```
175
-
176
- The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
177
-
178
- If you want to up your security game full-time:
179
-
180
- ```console
181
- bundle config set --global trust-policy MediumSecurity
182
- ```
183
-
184
- `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
185
-
186
- NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
187
-
188
- </details>
189
-
190
150
  ## ⚙️ Configuration
191
151
 
192
152
  This is a ruby library which is intended to be used in creating Ruby Consumer
193
153
  and Service Provider applications. It is NOT a Rails plugin, but could easily
194
154
  be used for the foundation for such a Rails plugin.
195
155
 
156
+ The main client entry point is `OAuth::Consumer.new(consumer_key, consumer_secret, options)`.
157
+ Common options include:
158
+
159
+ - `:site` - Provider origin, for example `https://provider.example`.
160
+ - `:request_token_path`, `:authorize_path`, `:authenticate_path`, `:access_token_path` - Provider endpoint paths. Defaults are `/oauth/request_token`, `/oauth/authorize`, `/oauth/authenticate`, and `/oauth/access_token`.
161
+ - `:request_token_url`, `:authorize_url`, `:access_token_url` - Full endpoint URLs. Use these when endpoints are not all under the same `:site` origin.
162
+ - `:scheme` - Where OAuth parameters are sent: `:header` by default, or `:body` / `:query_string`.
163
+ - `:http_method` - HTTP method for token endpoint requests, `:post` by default.
164
+ - `:signature_method` - Signature method, `HMAC-SHA1` by default.
165
+ - `:body_hash_enabled` - Whether request body hashes are signed where applicable. Defaults to `true`.
166
+ - `:ca_file`, `:proxy`, `:debug_output` - Net::HTTP transport options.
167
+ - `:token_request_max_redirects` - Maximum redirects followed while requesting OAuth tokens. Defaults to `10`.
168
+ - `:token_request_cross_origin_redirects` - Whether token requests may follow redirects to a different scheme, host, or effective port. Defaults to `false`; only enable this when the provider's token endpoints intentionally redirect across origins.
169
+
196
170
  This gem was originally extracted from @pelle's [oauth-plugin](https://github.com/pelle/oauth-plugin)
197
171
  gem. After extraction that gem was made to depend on this gem.
198
172
 
@@ -208,8 +182,10 @@ into a separate gem with the 1.x minor updates of this gem.
208
182
 
209
183
  ### Examples
210
184
 
211
- We need to specify the `oauth_callback` url explicitly, otherwise it defaults to
212
- "oob" (Out of Band)
185
+ For browser-based three-legged OAuth 1.0a flows, pass an explicit
186
+ `oauth_callback` URL when requesting the request token. If you do not pass
187
+ `oauth_callback`, this gem defaults it to `"oob"` (out of band), which is
188
+ intended for command-line and non-HTTP clients.
213
189
 
214
190
  ```ruby
215
191
  callback_url = "http://127.0.0.1:3000/oauth/callback"
@@ -218,40 +194,53 @@ callback_url = "http://127.0.0.1:3000/oauth/callback"
218
194
  Create a new `OAuth::Consumer` instance by passing it a configuration hash:
219
195
 
220
196
  ```ruby
221
- oauth_consumer = OAuth::Consumer.new("key", "secret", site: "https://agree2")
197
+ oauth_consumer = OAuth::Consumer.new(
198
+ "consumer_key",
199
+ "consumer_secret",
200
+ site: "https://provider.example"
201
+ )
222
202
  ```
223
203
 
224
- Start the process by requesting a token
204
+ Start the process by requesting a token:
225
205
 
226
206
  ```ruby
227
207
  request_token = oauth_consumer.get_request_token(oauth_callback: callback_url)
228
208
 
229
209
  session[:token] = request_token.token
230
210
  session[:token_secret] = request_token.secret
231
- redirect_to request_token.authorize_url(oauth_callback: callback_url)
211
+ redirect_to request_token.authorize_url
232
212
  ```
233
213
 
234
- When user returns create an access_token
214
+ When the user returns to your callback URL, rebuild the request token from the
215
+ values you stored and exchange it for an access token. OAuth 1.0a providers
216
+ return `oauth_verifier` in the callback, and it must be included in this
217
+ exchange.
235
218
 
236
219
  ```ruby
237
220
  hash = {oauth_token: session[:token], oauth_token_secret: session[:token_secret]}
238
221
  request_token = OAuth::RequestToken.from_hash(oauth_consumer, hash)
239
- access_token = request_token.get_access_token
240
- # For 3-legged authorization, flow oauth_verifier is passed as param in callback
241
- # access_token = request_token.get_access_token(oauth_verifier: params[:oauth_verifier])
222
+ access_token = request_token.get_access_token(oauth_verifier: params[:oauth_verifier])
242
223
  @photos = access_token.get("/photos.xml")
243
224
  ```
244
225
 
226
+ For OAuth 1.0 providers that do not use `oauth_verifier`, call
227
+ `request_token.get_access_token` without the verifier.
228
+
245
229
  Now that you have an access token, you can use Typhoeus to interact with the
246
230
  OAuth provider if you choose.
247
231
 
248
232
  ```ruby
249
233
  require "typhoeus"
250
234
  require "oauth/request_proxy/typhoeus_request"
235
+
236
+ uri = "https://provider.example/photos.xml"
237
+ options = {method: :get, headers: {}}
251
238
  oauth_params = {consumer: oauth_consumer, token: access_token}
239
+
252
240
  hydra = Typhoeus::Hydra.new
253
241
  req = Typhoeus::Request.new(uri, options) # :method needs to be specified in options
254
242
  oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(request_uri: uri))
243
+ req.options[:headers] ||= {}
255
244
  req.options[:headers]["Authorization"] = oauth_helper.header # Signs the request
256
245
  hydra.queue(req)
257
246
  hydra.run
@@ -265,14 +254,17 @@ hydra.run
265
254
  * Maintainer Blog: [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog]
266
255
  * Live ruby-oauth Chat: [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
267
256
 
257
+ [⛳gg-discussions]: https://groups.google.com/g/oauth-ruby
258
+ [⛳gg-discussions-img]: https://img.shields.io/badge/google-group-0093D0.svg?style=for-the-badge&logo=google&logoColor=orange
259
+
268
260
  ## 🦷 FLOSS Funding
269
261
 
270
262
  While ruby-oauth tools are free software and will always be, the project would benefit immensely from some funding.
271
263
  Raising a monthly budget of... "dollars" would make the project more sustainable.
272
264
 
273
265
  We welcome both individual and corporate sponsors! We also offer a
274
- wide array of funding channels to account for your preferences
275
- (although currently [Open Collective][🖇osc] is our preferred funding platform).
266
+ wide array of funding channels to account for your preferences.
267
+ Currently, [Open Collective][🖇osc] is our preferred funding platform.
276
268
 
277
269
  **If you're working in a company that's making significant use of ruby-oauth tools we'd
278
270
  appreciate it if you suggest to your company to become a ruby-oauth sponsor.**
@@ -284,7 +276,7 @@ You can support the development of ruby-oauth tools via
284
276
  [Open Collective][🖇osc]
285
277
  and [Tidelift][🏙️entsup-tidelift].
286
278
 
287
- | 📍 NOTE |
279
+ | 📍 NOTE |
288
280
  |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
289
281
  | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
290
282
 
@@ -306,17 +298,13 @@ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day
306
298
 
307
299
  <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
308
300
  No sponsors yet. Be the first!
309
-
310
- ### Open Collective for Donors
311
-
312
- [Bill Woika](https://opencollective.com/bill-woika)
313
301
  <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
314
302
 
315
303
  [kettle-readme-backers]: https://github.com/ruby-oauth/oauth/blob/main/exe/kettle-readme-backers
316
304
 
317
305
  ### Another way to support open-source
318
306
 
319
- I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
307
+ I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
320
308
 
321
309
  If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
322
310
 
@@ -333,7 +321,7 @@ See [SECURITY.md][🔐security].
333
321
  ## 🤝 Contributing
334
322
 
335
323
  If you need some ideas of where to help, you could work on adding more code coverage,
336
- or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
324
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
337
325
  or use the gem and think about how it could be better.
338
326
 
339
327
  We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
@@ -346,12 +334,17 @@ See [CONTRIBUTING.md][🤝contributing].
346
334
 
347
335
  ### Code Coverage
348
336
 
337
+ <details markdown="1">
338
+ <summary>Coverage service badges</summary>
339
+
349
340
  [![Coverage Graph][🏀codecov-g]][🏀codecov]
350
341
 
351
342
  [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
352
343
 
353
344
  [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
354
345
 
346
+ </details>
347
+
355
348
  ### 🪇 Code of Conduct
356
349
 
357
350
  Everyone interacting with this project's codebases, issue trackers,
@@ -366,13 +359,13 @@ Made with [contributors-img][🖐contrib-rocks].
366
359
  Also see GitLab Contributors: [https://gitlab.com/ruby-oauth/oauth/-/graphs/main][🚎contributors-gl]
367
360
 
368
361
  <details>
369
- <summary>⭐️ Star History</summary>
362
+ <summary>⭐️ Star History</summary>
370
363
 
371
- <a href="https://star-history.com/#ruby-oauth/oauth&Date">
364
+ <a href="https://star-history.com/ruby-oauth/oauth&Date">
372
365
  <picture>
373
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/oauth&type=Date&theme=dark" />
374
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/oauth&type=Date" />
375
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ruby-oauth/oauth&type=Date" />
366
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/oauth&type=Date&theme=dark" />
367
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/oauth&type=Date" />
368
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ruby-oauth/oauth&type=Date" />
376
369
  </picture>
377
370
  </a>
378
371
 
@@ -380,19 +373,8 @@ Also see GitLab Contributors: [https://gitlab.com/ruby-oauth/oauth/-/graphs/main
380
373
 
381
374
  ## 📌 Versioning
382
375
 
383
- This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
384
- Violations of this scheme should be reported as bugs.
385
- Specifically, if a minor or patch version is released that breaks backward compatibility,
386
- a new version should be immediately released that restores compatibility.
387
- Breaking changes to the public API will only be introduced with new major versions.
388
-
389
- > dropping support for a platform is both obviously and objectively a breaking change <br/>
390
- >—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
391
-
392
- I understand that policy doesn't work universally ("exceptions to every rule!"),
393
- but it is the policy here.
394
- As such, in many cases it is good to specify a dependency on this library using
395
- the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
376
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
377
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
396
378
 
397
379
  For example:
398
380
 
@@ -400,12 +382,11 @@ For example:
400
382
  spec.add_dependency("oauth", "~> 1.0")
401
383
  ```
402
384
 
403
- <details>
385
+ <details markdown="1">
404
386
  <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
405
387
 
406
- SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
407
- is a *breaking change* to an API.
408
- It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
388
+ Dropping support for a platform can be a breaking change for affected users.
389
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
409
390
 
410
391
  To get a better understanding of how SemVer is intended to work over a project's lifetime,
411
392
  read this article from the creator of SemVer:
@@ -419,25 +400,79 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
419
400
  ## 📄 License
420
401
 
421
402
  The gem is available as open source under the terms of
422
- the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref].
423
- See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
403
+ the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
424
404
 
425
405
  ### © Copyright
426
406
 
427
- <ul>
428
- <li>
429
- Copyright (c) 2020-2022, 2024-2025 Peter H. Boling, of
430
- <a href="https://discord.gg/3qme4XHNKN">
431
- Galtzo.com
432
- <picture>
433
- <img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0" width="24">
434
- </picture>
435
- </a>, and oauth contributors.
436
- </li>
437
- <li>
438
- Copyright (c) 2007-2012, 2016-2017 Blaine Cook, Larry Halff, Pelle Braendgaard
439
- </li>
440
- </ul>
407
+ See [LICENSE.md][📄license] for the official copyright notice.
408
+
409
+ <details markdown="1">
410
+ <summary>Copyright holders</summary>
411
+
412
+ - Copyright (c) 2007-2010 Pelle Braendgaard
413
+ - Copyright (c) 2008 Chris Mear
414
+ - Copyright (c) 2008 Jon Crosby
415
+ - Copyright (c) 2008-2010 Seth Fitzsimmons
416
+ - Copyright (c) 2008 Tilmann Singer
417
+ - Copyright (c) 2008 Tom Insam
418
+ - Copyright (c) 2008 tsailipu
419
+ - Copyright (c) 2009-2012 Aaron Quint
420
+ - Copyright (c) 2009 Anders Conbere
421
+ - Copyright (c) 2009 Bill Kocik
422
+ - Copyright (c) 2009 Darcy Laycock
423
+ - Copyright (c) 2009 Eric Hartmann
424
+ - Copyright (c) 2009 Greg Weber
425
+ - Copyright (c) 2009 Laszlo Bacsi
426
+ - Copyright (c) 2009 Marshall Huss
427
+ - Copyright (c) 2009 Matt Sanford
428
+ - Copyright (c) 2009 Neill Pearman
429
+ - Copyright (c) 2009 Seth Cousins
430
+ - Copyright (c) 2009 Yoan Blanc
431
+ - Copyright (c) 2010 andrehjr
432
+ - Copyright (c) 2010 Brian Finney
433
+ - Copyright (c) 2010 ecavazos
434
+ - Copyright (c) 2010 Joshua Hull
435
+ - Copyright (c) 2010 Marsh Gardiner
436
+ - Copyright (c) 2010 Michael Reinsch
437
+ - Copyright (c) 2010 Sean Cribbs
438
+ - Copyright (c) 2010 Steven Parkes
439
+ - Copyright (c) 2010 成田 一生
440
+ - Copyright (c) 2011 Shaliko Usubov
441
+ - Copyright (c) 2012 Ernie Miller
442
+ - Copyright (c) 2012 Jonathon M. Abbott
443
+ - Copyright (c) 2012 Richard Huang
444
+ - Copyright (c) 2012 rick
445
+ - Copyright (c) 2012 Steven Hammond
446
+ - Copyright (c) 2013 Craig Walker
447
+ - Copyright (c) 2013 Khem Veasna
448
+ - Copyright (c) 2014 Brian John
449
+ - Copyright (c) 2014 Michal Papis
450
+ - Copyright (c) 2014 raeno
451
+ - Copyright (c) 2015 jremmen
452
+ - Copyright (c) 2015 Kevin Hughes
453
+ - Copyright (c) 2016 Eric True
454
+ - Copyright (c) 2016-2017 James Pinto
455
+ - Copyright (c) 2016 jianben
456
+ - Copyright (c) 2016 Nik Wakelin
457
+ - Copyright (c) 2017 Ondrej Prazak
458
+ - Copyright (c) 2018 Nicholas Souphandavong
459
+ - Copyright (c) 2018 Yvonne
460
+ - Copyright (c) 2019 Agora@Ubuntu-dev
461
+ - Copyright (c) 2019 Shohei Maeda
462
+ - Copyright (c) 2020-2021, 2026 Khem
463
+ - Copyright (c) 2021 Chuck Remes
464
+ - Copyright (c) 2021 iamibi
465
+ - Copyright (c) 2021 Jeremy Sioui
466
+ - Copyright (c) 2021 Nick Morgan
467
+ - Copyright (c) 2021-2022, 2025-2026 Peter H. Boling
468
+ - Copyright (c) 2021 Richard Vowles
469
+ - Copyright (c) 2022 Shalvah
470
+ - Copyright (c) 2024-2025 Annibelle Boling
471
+ - Copyright (c) 2025 Aboling0
472
+ - Copyright (c) 2026 David Varga
473
+ - Copyright (c) 2026 StepSecurity Bot
474
+
475
+ </details>
441
476
 
442
477
  ## 🤑 A request for help
443
478
 
@@ -458,6 +493,8 @@ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
458
493
 
459
494
  ### Please give the project a star ⭐ ♥.
460
495
 
496
+ Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
497
+
461
498
  Thanks for RTFM. ☺️
462
499
 
463
500
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
@@ -480,7 +517,7 @@ Thanks for RTFM. ☺️
480
517
  [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
481
518
  [🖇polar]: https://polar.sh/pboling
482
519
  [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
483
- [🖇kofi]: https://ko-fi.com/O5O86SNP4
520
+ [🖇kofi]: https://ko-fi.com/pboling
484
521
  [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
485
522
  [🖇patreon]: https://patreon.com/galtzo
486
523
  [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
@@ -498,17 +535,17 @@ Thanks for RTFM. ☺️
498
535
 
499
536
  [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
500
537
  [⛳️gem-namespace]: https://github.com/ruby-oauth/oauth
501
- [⛳️namespace-img]: https://img.shields.io/badge/namespace-Oauth-3C2D2D.svg?style=square&logo=ruby&logoColor=white
538
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-OAuth-3C2D2D.svg?style=square&logo=ruby&logoColor=white
502
539
  [⛳️gem-name]: https://bestgems.org/gems/oauth
503
540
  [⛳️name-img]: https://img.shields.io/badge/name-oauth-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
504
541
  [⛳️tag-img]: https://img.shields.io/github/tag/ruby-oauth/oauth.svg
505
- [⛳️tag]: http://github.com/ruby-oauth/oauth/releases
542
+ [⛳️tag]: https://github.com/ruby-oauth/oauth/releases
506
543
  [🚂maint-blog]: http://www.railsbling.com/tags/oauth
507
544
  [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
508
545
  [🚂maint-contact]: http://www.railsbling.com/contact
509
546
  [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
510
547
  [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
511
- [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling
548
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
512
549
  [💖✌️wellfound]: https://wellfound.com/u/peter-boling
513
550
  [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
514
551
  [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
@@ -537,7 +574,7 @@ Thanks for RTFM. ☺️
537
574
  [💁🏼‍♂️peterboling]: http://www.peterboling.com
538
575
  [🚂railsbling]: http://www.railsbling.com
539
576
  [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
540
- [📜src-gl]: https://gitlab.com/ruby-oauth/oauth/
577
+ [📜src-gl]: https://gitlab.com/ruby-oauth/oauth
541
578
  [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
542
579
  [📜src-cb]: https://codeberg.org/ruby-oauth/oauth
543
580
  [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
@@ -546,8 +583,8 @@ Thanks for RTFM. ☺️
546
583
  [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
547
584
  [📜gl-wiki]: https://gitlab.com/ruby-oauth/oauth/-/wikis/home
548
585
  [📜gh-wiki]: https://github.com/ruby-oauth/oauth/wiki
549
- [📜gl-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
550
- [📜gh-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
586
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
587
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
551
588
  [👽dl-rank]: https://bestgems.org/gems/oauth
552
589
  [👽dl-ranki]: https://img.shields.io/gem/rd/oauth.svg
553
590
  [👽version]: https://bestgems.org/gems/oauth
@@ -560,24 +597,29 @@ Thanks for RTFM. ☺️
560
597
  [🏀codecovi]: https://codecov.io/gh/ruby-oauth/oauth/graph/badge.svg
561
598
  [🏀coveralls]: https://coveralls.io/github/ruby-oauth/oauth?branch=main
562
599
  [🏀coveralls-img]: https://coveralls.io/repos/github/ruby-oauth/oauth/badge.svg?branch=main
563
- [🖐codeQL]: https://github.com/ruby-oauth/oauth/security/code-scanning
564
- [🖐codeQL-img]: https://github.com/ruby-oauth/oauth/actions/workflows/codeql-analysis.yml/badge.svg
565
- [🚎1-an-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ancient.yml
566
- [🚎1-an-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/ancient.yml/badge.svg
600
+ [🚎ruby-2.4-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-2.4.yml
601
+ [🚎ruby-2.5-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-2.5.yml
602
+ [🚎ruby-2.6-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-2.6.yml
603
+ [🚎ruby-2.7-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-2.7.yml
604
+ [🚎ruby-3.0-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-3.0.yml
605
+ [🚎ruby-3.1-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-3.1.yml
606
+ [🚎ruby-3.2-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-3.2.yml
607
+ [🚎ruby-3.3-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-3.3.yml
608
+ [🚎ruby-3.4-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/ruby-3.4.yml
609
+ [🚎jruby-9.2-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/jruby-9.2.yml
610
+ [🚎jruby-9.3-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/jruby-9.3.yml
611
+ [🚎jruby-9.4-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/jruby-9.4.yml
612
+ [🚎truby-22.3-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/truffleruby-22.3.yml
613
+ [🚎truby-23.0-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/truffleruby-23.0.yml
614
+ [🚎truby-23.1-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/truffleruby-23.1.yml
615
+ [🚎truby-24.2-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/truffleruby-24.2.yml
616
+ [🚎truby-25.0-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/truffleruby-25.0.yml
567
617
  [🚎2-cov-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/coverage.yml
568
618
  [🚎2-cov-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/coverage.yml/badge.svg
569
619
  [🚎3-hd-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/heads.yml
570
620
  [🚎3-hd-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/heads.yml/badge.svg
571
- [🚎4-lg-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/legacy.yml
572
- [🚎4-lg-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/legacy.yml/badge.svg
573
621
  [🚎5-st-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/style.yml
574
622
  [🚎5-st-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/style.yml/badge.svg
575
- [🚎6-s-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/supported.yml
576
- [🚎6-s-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/supported.yml/badge.svg
577
- [🚎7-us-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/unsupported.yml
578
- [🚎7-us-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/unsupported.yml/badge.svg
579
- [🚎8-ho-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/hoary.yml
580
- [🚎8-ho-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/hoary.yml/badge.svg
581
623
  [🚎9-t-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/truffle.yml
582
624
  [🚎9-t-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/truffle.yml/badge.svg
583
625
  [🚎10-j-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/jruby.yml
@@ -592,7 +634,7 @@ Thanks for RTFM. ☺️
592
634
  [🚎14-🔓️-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/unlocked_deps.yml/badge.svg
593
635
  [🚎15-🪪-wf]: https://github.com/ruby-oauth/oauth/actions/workflows/license-eye.yml
594
636
  [🚎15-🪪-wfi]: https://github.com/ruby-oauth/oauth/actions/workflows/license-eye.yml/badge.svg
595
- [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
637
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
596
638
  [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
597
639
  [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
598
640
  [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
@@ -601,16 +643,18 @@ Thanks for RTFM. ☺️
601
643
  [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
602
644
  [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
603
645
  [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
646
+ [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
647
+ [💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
604
648
  [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
605
649
  [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
606
- [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
607
- [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
650
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
651
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
608
652
  [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
653
+ [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
654
+ [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
609
655
  [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
610
- [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
611
- [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
612
- [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
613
- [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
656
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
657
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
614
658
  [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
615
659
  [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
616
660
  [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
@@ -621,34 +665,35 @@ Thanks for RTFM. ☺️
621
665
  [🤝cb-issues]: https://codeberg.org/ruby-oauth/oauth/issues
622
666
  [🤝cb-pulls]: https://codeberg.org/ruby-oauth/oauth/pulls
623
667
  [🤝cb-donate]: https://donate.codeberg.org/
624
- [🤝contributing]: CONTRIBUTING.md
625
- [🏀codecov-g]: https://codecov.io/gh/ruby-oauth/oauth/graphs/tree.svg
668
+ [🤝contributing]: https://github.com/ruby-oauth/oauth/blob/main/CONTRIBUTING.md
669
+ [🏀codecov-g]: https://codecov.io/gh/ruby-oauth/oauth/graph/badge.svg
626
670
  [🖐contrib-rocks]: https://contrib.rocks
627
671
  [🖐contributors]: https://github.com/ruby-oauth/oauth/graphs/contributors
628
672
  [🖐contributors-img]: https://contrib.rocks/image?repo=ruby-oauth/oauth
629
673
  [🚎contributors-gl]: https://gitlab.com/ruby-oauth/oauth/-/graphs/main
630
- [🪇conduct]: CODE_OF_CONDUCT.md
674
+ [🪇conduct]: https://github.com/ruby-oauth/oauth/blob/main/CODE_OF_CONDUCT.md
631
675
  [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
632
676
  [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
633
677
  [📌semver]: https://semver.org/spec/v2.0.0.html
634
678
  [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
635
679
  [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
636
680
  [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
637
- [📌changelog]: CHANGELOG.md
681
+ [📌changelog]: https://github.com/ruby-oauth/oauth/blob/main/CHANGELOG.md
638
682
  [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
639
683
  [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
640
684
  [📌gitmoji]: https://gitmoji.dev
641
685
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
642
686
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
643
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-1.019-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
644
- [🔐security]: SECURITY.md
687
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.941-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
688
+ [🔐security]: https://github.com/ruby-oauth/oauth/blob/main/SECURITY.md
645
689
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
646
690
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
647
- [📄license]: LICENSE.txt
648
- [📄license-ref]: https://opensource.org/licenses/MIT
691
+ [📄license]: LICENSE.md
692
+ [📄license-ref]: MIT.md
649
693
  [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
650
- [📄license-compat]: https://dev.to/galtzo/how-to-check-license-compatibility-41h0
651
- [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
694
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
695
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-✓-259D6C.svg?style=flat&logo=Apache
696
+
652
697
  [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
653
698
  [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
654
699
  [🚎yard-current]: http://rubydoc.info/gems/oauth
@@ -660,3 +705,14 @@ Thanks for RTFM. ☺️
660
705
  [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
661
706
  [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
662
707
  [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
708
+
709
+ <!-- kettle-jem:metadata:start -->
710
+ | Field | Value |
711
+ |---|---|
712
+ | Package | oauth |
713
+ | Description | 🔑 A Ruby wrapper for the original OAuth 1.0 / 1.0a spec. |
714
+ | Homepage | https://github.com/ruby-oauth/oauth |
715
+ | Source | https://github.com/ruby-oauth/oauth/tree/v1.1.5 |
716
+ | License | `MIT` |
717
+ | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/ruby-oauth, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/oauth, https://www.buymeacoffee.com/pboling |
718
+ <!-- kettle-jem:metadata:end -->