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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +1 -4
- data/CHANGELOG.md +25 -1
- data/CITATION.cff +6 -6
- data/CODE_OF_CONDUCT.md +0 -0
- data/CONTRIBUTING.md +88 -34
- data/FUNDING.md +6 -9
- data/LICENSE.md +71 -0
- data/README.md +222 -166
- data/RUBOCOP.md +0 -0
- data/SECURITY.md +1 -4
- data/certs/pboling.pem +27 -0
- data/lib/oauth/auth_sanitizer.rb +0 -0
- data/lib/oauth/client/action_controller_request.rb +0 -0
- data/lib/oauth/client/em_http.rb +0 -0
- data/lib/oauth/client/helper.rb +0 -0
- data/lib/oauth/client/net_http.rb +0 -0
- data/lib/oauth/client.rb +0 -0
- data/lib/oauth/consumer.rb +68 -16
- data/lib/oauth/errors/error.rb +0 -0
- data/lib/oauth/errors/problem.rb +0 -0
- data/lib/oauth/errors/unauthorized.rb +0 -0
- data/lib/oauth/errors.rb +0 -0
- data/lib/oauth/helper.rb +0 -0
- data/lib/oauth/oauth.rb +0 -0
- data/lib/oauth/oauth_test_helper.rb +0 -0
- data/lib/oauth/optional.rb +0 -0
- data/lib/oauth/request_proxy/action_controller_request.rb +0 -0
- data/lib/oauth/request_proxy/action_dispatch_request.rb +0 -0
- data/lib/oauth/request_proxy/base.rb +0 -0
- data/lib/oauth/request_proxy/curb_request.rb +0 -0
- data/lib/oauth/request_proxy/em_http_request.rb +0 -0
- data/lib/oauth/request_proxy/jabber_request.rb +0 -0
- data/lib/oauth/request_proxy/mock_request.rb +0 -0
- data/lib/oauth/request_proxy/net_http.rb +0 -0
- data/lib/oauth/request_proxy/rack_request.rb +0 -0
- data/lib/oauth/request_proxy/rest_client_request.rb +0 -0
- data/lib/oauth/request_proxy/typhoeus_request.rb +0 -0
- data/lib/oauth/request_proxy.rb +0 -0
- data/lib/oauth/server.rb +0 -0
- data/lib/oauth/signature/base.rb +0 -0
- data/lib/oauth/signature/hmac/sha1.rb +0 -0
- data/lib/oauth/signature/hmac/sha256.rb +0 -0
- data/lib/oauth/signature/plaintext.rb +0 -0
- data/lib/oauth/signature/rsa/sha1.rb +0 -0
- data/lib/oauth/signature.rb +0 -0
- data/lib/oauth/token.rb +0 -0
- data/lib/oauth/tokens/access_token.rb +0 -0
- data/lib/oauth/tokens/consumer_token.rb +0 -0
- data/lib/oauth/tokens/request_token.rb +0 -0
- data/lib/oauth/tokens/server_token.rb +0 -0
- data/lib/oauth/tokens/token.rb +0 -0
- data/lib/oauth/version.rb +1 -1
- data/lib/oauth.rb +1 -0
- data/sig/oauth/consumer.rbs +0 -0
- data/sig/oauth/signature/base.rbs +0 -0
- data/sig/oauth/tokens/token.rbs +0 -0
- data/sig/oauth/version.rbs +6 -0
- data.tar.gz.sig +0 -0
- metadata +133 -108
- metadata.gz.sig +0 -0
- data/LICENSE.txt +0 -22
- data/REEK +0 -2
data/README.md
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
70
|
+
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
|
78
71
|
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
79
|
-
| Works with JRuby
|
|
80
|
-
| Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i]
|
|
81
|
-
| Works with MRI Ruby
|
|
82
|
-
| Works with MRI Ruby
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
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!
|
|
95
|
+
| 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
|
|
98
96
|
|
|
99
97
|
### Federated DVCS
|
|
100
98
|
|
|
101
|
-
<details>
|
|
102
|
-
|
|
99
|
+
<details markdown="1">
|
|
100
|
+
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
103
101
|
|
|
104
|
-
| Federated [DVCS][💎d-in-dvcs] Repository
|
|
102
|
+
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
|
105
103
|
|-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
|
|
106
|
-
| 🧪 [ruby-oauth/oauth on GitLab][📜src-gl]
|
|
107
|
-
| 🧊 [ruby-oauth/oauth on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate])
|
|
108
|
-
| 🐙 [ruby-oauth/oauth on GitHub][📜src-gh]
|
|
109
|
-
|
|
|
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
|
-
|
|
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
|
-
|
|
212
|
-
|
|
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(
|
|
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
|
|
211
|
+
redirect_to request_token.authorize_url
|
|
232
212
|
```
|
|
233
213
|
|
|
234
|
-
When user returns
|
|
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
|
-
|
|
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.
|
|
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 [
|
|
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
|
-
|
|
362
|
+
<summary>⭐️ Star History</summary>
|
|
370
363
|
|
|
371
|
-
<a href="https://star-history.com
|
|
364
|
+
<a href="https://star-history.com/ruby-oauth/oauth&Date">
|
|
372
365
|
<picture>
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
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
|
|
384
|
-
|
|
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
|
-
|
|
407
|
-
|
|
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
|
|
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
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
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/
|
|
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-
|
|
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]:
|
|
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/
|
|
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-
|
|
550
|
-
[📜gh-wiki-img]: https://img.shields.io/badge/wiki-
|
|
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
|
-
[
|
|
564
|
-
[
|
|
565
|
-
[🚎
|
|
566
|
-
[🚎
|
|
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.
|
|
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.
|
|
607
|
-
[💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.
|
|
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
|
-
[💎
|
|
611
|
-
[💎jruby-9.
|
|
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/
|
|
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-
|
|
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.
|
|
648
|
-
[📄license-ref]:
|
|
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://
|
|
651
|
-
[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A
|
|
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 -->
|