oauth 0.5.8 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +136 -115
  3. data/CODE_OF_CONDUCT.md +0 -0
  4. data/CONTRIBUTING.md +19 -2
  5. data/LICENSE +2 -1
  6. data/README.md +267 -67
  7. data/SECURITY.md +18 -8
  8. data/TODO +0 -0
  9. data/lib/oauth/client/action_controller_request.rb +17 -15
  10. data/lib/oauth/client/em_http.rb +30 -30
  11. data/lib/oauth/client/helper.rb +76 -75
  12. data/lib/oauth/client/net_http.rb +109 -102
  13. data/lib/oauth/client.rb +2 -0
  14. data/lib/oauth/consumer.rb +113 -110
  15. data/lib/oauth/errors/error.rb +2 -0
  16. data/lib/oauth/errors/problem.rb +3 -0
  17. data/lib/oauth/errors/unauthorized.rb +4 -0
  18. data/lib/oauth/errors.rb +2 -0
  19. data/lib/oauth/helper.rb +16 -12
  20. data/lib/oauth/oauth.rb +6 -4
  21. data/lib/oauth/oauth_test_helper.rb +2 -0
  22. data/lib/oauth/request_proxy/action_controller_request.rb +3 -24
  23. data/lib/oauth/request_proxy/action_dispatch_request.rb +0 -0
  24. data/lib/oauth/request_proxy/base.rb +2 -2
  25. data/lib/oauth/request_proxy/curb_request.rb +0 -0
  26. data/lib/oauth/request_proxy/em_http_request.rb +0 -0
  27. data/lib/oauth/request_proxy/jabber_request.rb +0 -0
  28. data/lib/oauth/request_proxy/mock_request.rb +1 -1
  29. data/lib/oauth/request_proxy/net_http.rb +5 -7
  30. data/lib/oauth/request_proxy/rack_request.rb +0 -0
  31. data/lib/oauth/request_proxy/rest_client_request.rb +2 -1
  32. data/lib/oauth/request_proxy/typhoeus_request.rb +0 -0
  33. data/lib/oauth/request_proxy.rb +7 -4
  34. data/lib/oauth/server.rb +12 -10
  35. data/lib/oauth/signature/base.rb +71 -66
  36. data/lib/oauth/signature/hmac/sha1.rb +15 -9
  37. data/lib/oauth/signature/hmac/sha256.rb +15 -9
  38. data/lib/oauth/signature/plaintext.rb +18 -20
  39. data/lib/oauth/signature/rsa/sha1.rb +46 -38
  40. data/lib/oauth/signature.rb +8 -5
  41. data/lib/oauth/token.rb +2 -0
  42. data/lib/oauth/tokens/access_token.rb +2 -0
  43. data/lib/oauth/tokens/consumer_token.rb +4 -2
  44. data/lib/oauth/tokens/request_token.rb +12 -10
  45. data/lib/oauth/tokens/server_token.rb +2 -1
  46. data/lib/oauth/tokens/token.rb +2 -0
  47. data/lib/oauth/version.rb +5 -1
  48. data/lib/oauth.rb +9 -2
  49. metadata +87 -35
  50. data/bin/oauth +0 -11
  51. data/lib/oauth/cli/authorize_command.rb +0 -71
  52. data/lib/oauth/cli/base_command.rb +0 -208
  53. data/lib/oauth/cli/help_command.rb +0 -22
  54. data/lib/oauth/cli/query_command.rb +0 -25
  55. data/lib/oauth/cli/sign_command.rb +0 -81
  56. data/lib/oauth/cli/version_command.rb +0 -7
  57. data/lib/oauth/cli.rb +0 -56
data/lib/oauth.rb CHANGED
@@ -1,5 +1,8 @@
1
- root = File.dirname(__FILE__)
2
- $LOAD_PATH << root unless $LOAD_PATH.include?(root)
1
+ # frozen_string_literal: true
2
+
3
+ # third party gems
4
+ require "snaky_hash"
5
+ require "version_gem"
3
6
 
4
7
  require "oauth/version"
5
8
 
@@ -11,3 +14,7 @@ require "oauth/signature/hmac/sha1"
11
14
  require "oauth/signature/hmac/sha256"
12
15
  require "oauth/signature/rsa/sha1"
13
16
  require "oauth/request_proxy/mock_request"
17
+
18
+ OAuth::Version.class_eval do
19
+ extend VersionGem::Basic
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.8
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pelle Braendgaard
@@ -16,36 +16,56 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2021-11-10 00:00:00.000000000 Z
19
+ date: 2022-08-29 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: actionpack
22
+ name: oauth-tty
23
23
  requirement: !ruby/object:Gem::Requirement
24
24
  requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.0'
25
28
  - - ">="
26
29
  - !ruby/object:Gem::Version
27
- version: '5.0'
28
- type: :development
30
+ version: 1.0.1
31
+ type: :runtime
29
32
  prerelease: false
30
33
  version_requirements: !ruby/object:Gem::Requirement
31
34
  requirements:
35
+ - - "~>"
36
+ - !ruby/object:Gem::Version
37
+ version: '1.0'
32
38
  - - ">="
33
39
  - !ruby/object:Gem::Version
34
- version: '5.0'
40
+ version: 1.0.1
35
41
  - !ruby/object:Gem::Dependency
36
- name: curb
42
+ name: snaky_hash
37
43
  requirement: !ruby/object:Gem::Requirement
38
44
  requirements:
39
- - - ">="
45
+ - - "~>"
40
46
  - !ruby/object:Gem::Version
41
- version: '0'
42
- type: :development
47
+ version: '2.0'
48
+ type: :runtime
43
49
  prerelease: false
44
50
  version_requirements: !ruby/object:Gem::Requirement
45
51
  requirements:
46
- - - ">="
52
+ - - "~>"
47
53
  - !ruby/object:Gem::Version
48
- version: '0'
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: version_gem
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.1'
49
69
  - !ruby/object:Gem::Dependency
50
70
  name: em-http-request
51
71
  requirement: !ruby/object:Gem::Requirement
@@ -78,16 +98,16 @@ dependencies:
78
98
  name: minitest
79
99
  requirement: !ruby/object:Gem::Requirement
80
100
  requirements:
81
- - - ">="
101
+ - - "~>"
82
102
  - !ruby/object:Gem::Version
83
- version: '0'
103
+ version: 5.15.0
84
104
  type: :development
85
105
  prerelease: false
86
106
  version_requirements: !ruby/object:Gem::Requirement
87
107
  requirements:
88
- - - ">="
108
+ - - "~>"
89
109
  - !ruby/object:Gem::Version
90
- version: '0'
110
+ version: 5.15.0
91
111
  - !ruby/object:Gem::Dependency
92
112
  name: mocha
93
113
  requirement: !ruby/object:Gem::Requirement
@@ -158,6 +178,20 @@ dependencies:
158
178
  - - ">="
159
179
  - !ruby/object:Gem::Version
160
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop-lts
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '18.0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '18.0'
161
195
  - !ruby/object:Gem::Dependency
162
196
  name: typhoeus
163
197
  requirement: !ruby/object:Gem::Requirement
@@ -178,18 +212,17 @@ dependencies:
178
212
  requirements:
179
213
  - - "<="
180
214
  - !ruby/object:Gem::Version
181
- version: 3.14.0
215
+ version: 3.19.0
182
216
  type: :development
183
217
  prerelease: false
184
218
  version_requirements: !ruby/object:Gem::Requirement
185
219
  requirements:
186
220
  - - "<="
187
221
  - !ruby/object:Gem::Version
188
- version: 3.14.0
222
+ version: 3.19.0
189
223
  description:
190
224
  email: oauth-ruby@googlegroups.com
191
- executables:
192
- - oauth
225
+ executables: []
193
226
  extensions: []
194
227
  extra_rdoc_files:
195
228
  - TODO
@@ -201,15 +234,7 @@ files:
201
234
  - README.md
202
235
  - SECURITY.md
203
236
  - TODO
204
- - bin/oauth
205
237
  - lib/oauth.rb
206
- - lib/oauth/cli.rb
207
- - lib/oauth/cli/authorize_command.rb
208
- - lib/oauth/cli/base_command.rb
209
- - lib/oauth/cli/help_command.rb
210
- - lib/oauth/cli/query_command.rb
211
- - lib/oauth/cli/sign_command.rb
212
- - lib/oauth/cli/version_command.rb
213
238
  - lib/oauth/client.rb
214
239
  - lib/oauth/client/action_controller_request.rb
215
240
  - lib/oauth/client/em_http.rb
@@ -253,12 +278,39 @@ homepage: https://github.com/oauth-xx/oauth-ruby
253
278
  licenses:
254
279
  - MIT
255
280
  metadata:
256
- bug_tracker_uri: https://github.com/oauth-xx/oauth-ruby/issues
257
- changelog_uri: https://github.com/oauth-xx/oauth-ruby/blob/master/CHANGELOG.md
258
- documentation_uri: https://rubydoc.info/github/oauth-xx/oauth-ruby/master
259
281
  homepage_uri: https://github.com/oauth-xx/oauth-ruby
260
- source_code_uri: https://github.com/oauth-xx/oauth-ruby
261
- post_install_message:
282
+ source_code_uri: https://github.com/oauth-xx/oauth-ruby/tree/v1.1.0
283
+ changelog_uri: https://github.com/oauth-xx/oauth-ruby/blob/v1.1.0/CHANGELOG.md
284
+ bug_tracker_uri: https://github.com/oauth-xx/oauth-ruby/issues
285
+ documentation_uri: https://www.rubydoc.info/gems/oauth/1.1.0
286
+ wiki_uri: https://github.com/oauth-xx/oauth-ruby/wiki
287
+ rubygems_mfa_required: 'true'
288
+ post_install_message: |2
289
+
290
+ You have installed oauth version 1.1.0, congratulations!
291
+
292
+ Non-commercial support for the 1.x series will end by April, 2025. Please make a plan to upgrade to the next version prior to that date.
293
+ The only breaking change will be dropped support for Ruby 2.7 and any other versions which will also have reached EOL by then.
294
+
295
+ Please see:
296
+ • https://github.com/oauth-xx/oauth-ruby/blob/main/SECURITY.md
297
+
298
+ Note also that I am, and this project is, in the process of leaving Github.
299
+ I wrote about some of the reasons here:
300
+ • https://dev.to/galtzo/im-leaving-github-50ba
301
+
302
+ If you are a human, please consider a donation as I move toward supporting myself with Open Source work:
303
+ • https://liberapay.com/pboling
304
+ • https://ko-fi.com/pboling
305
+ • https://patreon.com/galtzo
306
+
307
+ If you are a corporation, please consider supporting this project, and open source work generally, with a TideLift subscription.
308
+ • https://tidelift.com/funding/github/rubygems/oauth
309
+ • Or hire me. I am looking for a job!
310
+
311
+ Please report issues, and support the project!
312
+
313
+ Thanks, |7eter l-|. l3oling
262
314
  rdoc_options: []
263
315
  require_paths:
264
316
  - lib
@@ -266,14 +318,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
266
318
  requirements:
267
319
  - - ">="
268
320
  - !ruby/object:Gem::Version
269
- version: '2.0'
321
+ version: '2.7'
270
322
  required_rubygems_version: !ruby/object:Gem::Requirement
271
323
  requirements:
272
324
  - - ">="
273
325
  - !ruby/object:Gem::Version
274
326
  version: '0'
275
327
  requirements: []
276
- rubygems_version: 3.0.3.1
328
+ rubygems_version: 3.3.21
277
329
  signing_key:
278
330
  specification_version: 4
279
331
  summary: OAuth Core Ruby implementation
data/bin/oauth DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require_relative "../lib/oauth"
4
- require "oauth/cli"
5
-
6
- Signal.trap("INT") { puts; exit(1) } # don't dump a backtrace on a ^C
7
-
8
- ARGV << "help" if ARGV.empty?
9
- command = ARGV.shift
10
-
11
- OAuth::CLI.new(STDOUT, STDIN, STDERR, command, ARGV).run
@@ -1,71 +0,0 @@
1
- class OAuth::CLI
2
- class AuthorizeCommand < BaseCommand
3
-
4
- def required_options
5
- [:uri]
6
- end
7
-
8
- def _run
9
- request_token = get_request_token
10
-
11
- if request_token.callback_confirmed?
12
- puts "Server appears to support OAuth 1.0a; enabling support."
13
- options[:version] = "1.0a"
14
- end
15
-
16
- puts "Please visit this url to authorize:"
17
- puts request_token.authorize_url
18
-
19
- # parameters for OAuth 1.0a
20
- oauth_verifier = ask_user_for_verifier
21
-
22
- verbosely_get_access_token(request_token, oauth_verifier)
23
- end
24
-
25
- def get_request_token
26
- consumer = get_consumer
27
- scope_options = options[:scope] ? { "scope" => options[:scope] } : {}
28
- consumer.get_request_token({ :oauth_callback => options[:oauth_callback] }, scope_options)
29
- rescue OAuth::Unauthorized => e
30
- alert "A problem occurred while attempting to authorize:"
31
- alert e
32
- alert e.request.body
33
- end
34
-
35
- def get_consumer
36
- OAuth::Consumer.new \
37
- options[:oauth_consumer_key],
38
- options[:oauth_consumer_secret],
39
- :access_token_url => options[:access_token_url],
40
- :authorize_url => options[:authorize_url],
41
- :request_token_url => options[:request_token_url],
42
- :scheme => options[:scheme],
43
- :http_method => options[:method].to_s.downcase.to_sym
44
- end
45
-
46
-
47
- def ask_user_for_verifier
48
- if options[:version] == "1.0a"
49
- puts "Please enter the verification code provided by the SP (oauth_verifier):"
50
- @stdin.gets.chomp
51
- else
52
- puts "Press return to continue..."
53
- @stdin.gets
54
- nil
55
- end
56
- end
57
-
58
- def verbosely_get_access_token(request_token, oauth_verifier)
59
- access_token = request_token.get_access_token(:oauth_verifier => oauth_verifier)
60
-
61
- puts "Response:"
62
- access_token.params.each do |k,v|
63
- puts " #{k}: #{v}" unless k.is_a?(Symbol)
64
- end
65
- rescue OAuth::Unauthorized => e
66
- alert "A problem occurred while attempting to obtain an access token:"
67
- alert e
68
- alert e.request.body
69
- end
70
- end
71
- end
@@ -1,208 +0,0 @@
1
- class OAuth::CLI
2
- class BaseCommand
3
- def initialize(stdout, stdin, stderr, arguments)
4
- @stdout, @stdin, @stderr = stdout, stdin, stderr
5
-
6
- @options = {}
7
- option_parser.parse!(arguments)
8
- end
9
-
10
- def run
11
- missing = required_options - options.keys
12
- if missing.empty?
13
- _run
14
- else
15
- show_missing(missing)
16
- puts option_parser.help
17
- end
18
- end
19
-
20
- def required_options
21
- []
22
- end
23
-
24
- protected
25
-
26
- attr_reader :options
27
-
28
- def show_missing(array)
29
- array = array.map { |s| "--#{s}" }.join(" ")
30
- OAuth::CLI.puts_red "Options missing to OAuth CLI: #{array}"
31
- end
32
-
33
- def xmpp?
34
- options[:xmpp]
35
- end
36
-
37
- def verbose?
38
- options[:verbose]
39
- end
40
-
41
- def puts(string=nil)
42
- @stdout.puts(string)
43
- end
44
-
45
- def alert(string=nil)
46
- @stderr.puts(string)
47
- end
48
-
49
- def parameters
50
- @parameters ||= begin
51
- escaped_pairs = options[:params].collect do |pair|
52
- if pair =~ /:/
53
- Hash[*pair.split(":", 2)].collect do |k,v|
54
- [CGI.escape(k.strip), CGI.escape(v.strip)] * "="
55
- end
56
- else
57
- pair
58
- end
59
- end
60
-
61
- querystring = escaped_pairs * "&"
62
- cli_params = CGI.parse(querystring)
63
-
64
- {
65
- "oauth_consumer_key" => options[:oauth_consumer_key],
66
- "oauth_nonce" => options[:oauth_nonce],
67
- "oauth_timestamp" => options[:oauth_timestamp],
68
- "oauth_token" => options[:oauth_token],
69
- "oauth_signature_method" => options[:oauth_signature_method],
70
- "oauth_version" => options[:oauth_version]
71
- }.reject { |_k,v| v.nil? || v == "" }.merge(cli_params)
72
- end
73
- end
74
-
75
- def option_parser
76
- @option_parser ||= OptionParser.new do |opts|
77
- opts.banner = "Usage: oauth <command> [ARGS]"
78
-
79
- _option_parser_defaults
80
- _option_parser_common(opts)
81
- _option_parser_sign_and_query(opts)
82
- _option_parser_authorization(opts)
83
- end
84
- end
85
-
86
- def _option_parser_defaults
87
- options[:oauth_nonce] = OAuth::Helper.generate_key
88
- options[:oauth_signature_method] = "HMAC-SHA1"
89
- options[:oauth_timestamp] = OAuth::Helper.generate_timestamp
90
- options[:oauth_version] = "1.0"
91
- options[:method] = :post
92
- options[:params] = []
93
- options[:scheme] = :header
94
- options[:version] = "1.0"
95
- end
96
-
97
- def _option_parser_common(opts)
98
- ## Common Options
99
-
100
- opts.on("-B", "--body", "Use the request body for OAuth parameters.") do
101
- options[:scheme] = :body
102
- end
103
-
104
- opts.on("--consumer-key KEY", "Specifies the consumer key to use.") do |v|
105
- options[:oauth_consumer_key] = v
106
- end
107
-
108
- opts.on("--consumer-secret SECRET", "Specifies the consumer secret to use.") do |v|
109
- options[:oauth_consumer_secret] = v
110
- end
111
-
112
- opts.on("-H", "--header", "Use the 'Authorization' header for OAuth parameters (default).") do
113
- options[:scheme] = :header
114
- end
115
-
116
- opts.on("-Q", "--query-string", "Use the query string for OAuth parameters.") do
117
- options[:scheme] = :query_string
118
- end
119
-
120
- opts.on("-O", "--options FILE", "Read options from a file") do |v|
121
- arguments = open(v).readlines.map { |l| l.chomp.split(" ") }.flatten
122
- options2 = parse_options(arguments)
123
- options.merge!(options2)
124
- end
125
- end
126
-
127
- def _option_parser_sign_and_query(opts)
128
- opts.separator("\n options for signing and querying")
129
-
130
- opts.on("--method METHOD", "Specifies the method (e.g. GET) to use when signing.") do |v|
131
- options[:method] = v
132
- end
133
-
134
- opts.on("--nonce NONCE", "Specifies the nonce to use.") do |v|
135
- options[:oauth_nonce] = v
136
- end
137
-
138
- opts.on("--parameters PARAMS", "Specifies the parameters to use when signing.") do |v|
139
- options[:params] << v
140
- end
141
-
142
- opts.on("--signature-method METHOD", "Specifies the signature method to use; defaults to HMAC-SHA1.") do |v|
143
- options[:oauth_signature_method] = v
144
- end
145
-
146
- opts.on("--token TOKEN", "Specifies the token to use.") do |v|
147
- options[:oauth_token] = v
148
- end
149
-
150
- opts.on("--secret SECRET", "Specifies the token secret to use.") do |v|
151
- options[:oauth_token_secret] = v
152
- end
153
-
154
- opts.on("--timestamp TIMESTAMP", "Specifies the timestamp to use.") do |v|
155
- options[:oauth_timestamp] = v
156
- end
157
-
158
- opts.on("--realm REALM", "Specifies the realm to use.") do |v|
159
- options[:realm] = v
160
- end
161
-
162
- opts.on("--uri URI", "Specifies the URI to use when signing.") do |v|
163
- options[:uri] = v
164
- end
165
-
166
- opts.on("--version [VERSION]", "Specifies the OAuth version to use.") do |v|
167
- options[:oauth_version] = v
168
- end
169
-
170
- opts.on("--no-version", "Omit oauth_version.") do
171
- options[:oauth_version] = nil
172
- end
173
-
174
- opts.on("--xmpp", "Generate XMPP stanzas.") do
175
- options[:xmpp] = true
176
- options[:method] ||= "iq"
177
- end
178
-
179
- opts.on("-v", "--verbose", "Be verbose.") do
180
- options[:verbose] = true
181
- end
182
- end
183
-
184
- def _option_parser_authorization(opts)
185
- opts.separator("\n options for authorization")
186
-
187
- opts.on("--access-token-url URL", "Specifies the access token URL.") do |v|
188
- options[:access_token_url] = v
189
- end
190
-
191
- opts.on("--authorize-url URL", "Specifies the authorization URL.") do |v|
192
- options[:authorize_url] = v
193
- end
194
-
195
- opts.on("--callback-url URL", "Specifies a callback URL.") do |v|
196
- options[:oauth_callback] = v
197
- end
198
-
199
- opts.on("--request-token-url URL", "Specifies the request token URL.") do |v|
200
- options[:request_token_url] = v
201
- end
202
-
203
- opts.on("--scope SCOPE", "Specifies the scope (Google-specific).") do |v|
204
- options[:scope] = v
205
- end
206
- end
207
- end
208
- end
@@ -1,22 +0,0 @@
1
- class OAuth::CLI
2
- class HelpCommand < BaseCommand
3
- def run
4
- puts <<-EOT
5
- Usage: oauth COMMAND [ARGS]
6
-
7
- Available oauth commands are:
8
- a, authorize Obtain an access token and secret for a user
9
- q, query Query a protected resource
10
- s, sign Generate an OAuth signature
11
-
12
- In addition to those, there are:
13
- v, version Displays the current version of the library (or --version, -v)
14
- h, help Displays this help (or --help, -h)
15
-
16
- Tip: All commands can be run without args for specific help.
17
-
18
-
19
- EOT
20
- end
21
- end
22
- end
@@ -1,25 +0,0 @@
1
- class OAuth::CLI
2
- class QueryCommand < BaseCommand
3
- extend OAuth::Helper
4
-
5
- def required_options
6
- [:oauth_consumer_key, :oauth_consumer_secret, :oauth_token, :oauth_token_secret]
7
- end
8
-
9
- def _run
10
- consumer = OAuth::Consumer.new(options[:oauth_consumer_key], options[:oauth_consumer_secret], scheme: options[:scheme])
11
-
12
- access_token = OAuth::AccessToken.new(consumer, options[:oauth_token], options[:oauth_token_secret])
13
-
14
- # append params to the URL
15
- uri = URI.parse(options[:uri])
16
- params = parameters.map { |k,v| Array(v).map { |v2| "#{OAuth::Helper.escape(k)}=#{OAuth::Helper.escape(v2)}" } * "&" }
17
- uri.query = [uri.query, *params].reject { |x| x.nil? } * "&"
18
- puts uri.to_s
19
-
20
- response = access_token.request(options[:method].to_s.downcase.to_sym, uri.to_s)
21
- puts "#{response.code} #{response.message}"
22
- puts response.body
23
- end
24
- end
25
- end
@@ -1,81 +0,0 @@
1
- class OAuth::CLI
2
- class SignCommand < BaseCommand
3
-
4
- def required_options
5
- [:oauth_consumer_key, :oauth_consumer_secret, :oauth_token, :oauth_token_secret]
6
- end
7
-
8
- def _run
9
- request = OAuth::RequestProxy.proxy \
10
- "method" => options[:method],
11
- "uri" => options[:uri],
12
- "parameters" => parameters
13
-
14
- if verbose?
15
- puts_verbose_parameters(request)
16
- end
17
-
18
- request.sign! \
19
- :consumer_secret => options[:oauth_consumer_secret],
20
- :token_secret => options[:oauth_token_secret]
21
-
22
- if verbose?
23
- puts_verbose_request(request)
24
- else
25
- puts request.oauth_signature
26
- end
27
- end
28
-
29
- def puts_verbose_parameters(request)
30
- puts "OAuth parameters:"
31
- request.oauth_parameters.each do |k,v|
32
- puts " " + [k, v] * ": "
33
- end
34
- puts
35
-
36
- if request.non_oauth_parameters.any?
37
- puts "Parameters:"
38
- request.non_oauth_parameters.each do |k,v|
39
- puts " " + [k, v] * ": "
40
- end
41
- puts
42
- end
43
- end
44
-
45
- def puts_verbose_request(request)
46
- puts "Method: #{request.method}"
47
- puts "URI: #{request.uri}"
48
- puts "Normalized params: #{request.normalized_parameters}" unless options[:xmpp]
49
- puts "Signature base string: #{request.signature_base_string}"
50
-
51
- if xmpp?
52
- puts
53
- puts "XMPP Stanza:"
54
- puts xmpp_output(request)
55
- puts
56
- puts "Note: You may want to use bare JIDs in your URI."
57
- puts
58
- else
59
- puts "OAuth Request URI: #{request.signed_uri}"
60
- puts "Request URI: #{request.signed_uri(false)}"
61
- puts "Authorization header: #{request.oauth_header(:realm => options[:realm])}"
62
- end
63
- puts "Signature: #{request.oauth_signature}"
64
- puts "Escaped signature: #{OAuth::Helper.escape(request.oauth_signature)}"
65
- end
66
-
67
- def xmpp_output(request)
68
- <<-EOS
69
- <oauth xmlns='urn:xmpp:oauth:0'>
70
- <oauth_consumer_key>#{request.oauth_consumer_key}</oauth_consumer_key>
71
- <oauth_token>#{request.oauth_token}</oauth_token>
72
- <oauth_signature_method>#{request.oauth_signature_method}</oauth_signature_method>
73
- <oauth_signature>#{request.oauth_signature}</oauth_signature>
74
- <oauth_timestamp>#{request.oauth_timestamp}</oauth_timestamp>
75
- <oauth_nonce>#{request.oauth_nonce}</oauth_nonce>
76
- <oauth_version>#{request.oauth_version}</oauth_version>
77
- </oauth>
78
- EOS
79
- end
80
- end
81
- end
@@ -1,7 +0,0 @@
1
- class OAuth::CLI
2
- class VersionCommand < BaseCommand
3
- def run
4
- puts "OAuth Gem #{OAuth::VERSION}"
5
- end
6
- end
7
- end