mojodna-oauth 0.3.4.1 → 0.3.5

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.
data/History.txt CHANGED
@@ -1,10 +1,12 @@
1
- == 0.3.5
1
+ == 0.3.5 2009-06-03
2
2
 
3
3
  * `query` CLI command to access protected resources (Seth)
4
4
  * Added -H, -Q CLI options for specifying the authorization scheme (Seth)
5
5
  * Added -O CLI option for specifying a file containing options (Seth)
6
6
  * Support streamable body contents for large request bodies (Seth Cousins)
7
7
  * Support for OAuth 1.0a (Seth)
8
+ * Added proxy support to OAuth::Consumer (Marshall Huss)
9
+ * Added --scope CLI option for Google's 'scope' parameter (Seth)
8
10
 
9
11
  == 0.3.4 2009-05-06
10
12
 
data/lib/oauth/cli.rb CHANGED
@@ -7,7 +7,8 @@ module OAuth
7
7
  "authorize" => "Obtain an access token and secret for a user",
8
8
  "debug" => "Verbosely generate an OAuth signature",
9
9
  "query" => "Query a protected resource",
10
- "sign" => "Generate an OAuth signature"
10
+ "sign" => "Generate an OAuth signature",
11
+ "version" => "Display the current version of the library"
11
12
  }
12
13
 
13
14
  attr_reader :command
@@ -42,47 +43,54 @@ module OAuth
42
43
  case command
43
44
  # TODO move command logic elsewhere
44
45
  when "authorize"
45
- consumer = OAuth::Consumer.new \
46
- options[:oauth_consumer_key],
47
- options[:oauth_consumer_secret],
48
- :access_token_url => options[:access_token_url],
49
- :authorize_url => options[:authorize_url],
50
- :request_token_url => options[:request_token_url],
51
- :scheme => options[:scheme]
52
-
53
- # parameters for OAuth 1.0a
54
- oauth_verifier = nil
55
-
56
- # get a request token
57
- request_token = consumer.get_request_token(:oauth_callback => options[:oauth_callback])
58
-
59
- if request_token.callback_confirmed?
60
- stdout.puts "Server appears to support OAuth 1.0a; enabling support."
61
- options[:version] = "1.0a"
62
- end
46
+ begin
47
+ consumer = OAuth::Consumer.new \
48
+ options[:oauth_consumer_key],
49
+ options[:oauth_consumer_secret],
50
+ :access_token_url => options[:access_token_url],
51
+ :authorize_url => options[:authorize_url],
52
+ :request_token_url => options[:request_token_url],
53
+ :scheme => options[:scheme]
54
+
55
+ # parameters for OAuth 1.0a
56
+ oauth_verifier = nil
57
+
58
+ # get a request token
59
+ request_token = consumer.get_request_token({ :oauth_callback => options[:oauth_callback] }, { :scope => options[:scope] })
60
+
61
+ if request_token.callback_confirmed?
62
+ stdout.puts "Server appears to support OAuth 1.0a; enabling support."
63
+ options[:version] = "1.0a"
64
+ end
63
65
 
64
- stdout.puts "Please visit this url to authorize:"
65
- stdout.puts request_token.authorize_url
66
+ stdout.puts "Please visit this url to authorize:"
67
+ stdout.puts request_token.authorize_url
66
68
 
67
- if options[:version] == "1.0a"
68
- stdout.puts "Please enter the verification code provided by the SP (oauth_verifier):"
69
- oauth_verifier = stdin.gets.chomp
70
- else
71
- stdout.puts "Press return to continue..."
72
- stdin.gets
73
- end
69
+ if options[:version] == "1.0a"
70
+ stdout.puts "Please enter the verification code provided by the SP (oauth_verifier):"
71
+ oauth_verifier = stdin.gets.chomp
72
+ else
73
+ stdout.puts "Press return to continue..."
74
+ stdin.gets
75
+ end
74
76
 
75
- begin
76
- # get an access token
77
- access_token = request_token.get_access_token(:oauth_verifier => oauth_verifier)
77
+ begin
78
+ # get an access token
79
+ access_token = request_token.get_access_token(:oauth_verifier => oauth_verifier)
78
80
 
79
- stdout.puts "Response:"
80
- access_token.params.each do |k,v|
81
- stdout.puts " #{k}: #{v}" unless k.is_a?(Symbol)
81
+ stdout.puts "Response:"
82
+ access_token.params.each do |k,v|
83
+ stdout.puts " #{k}: #{v}" unless k.is_a?(Symbol)
84
+ end
85
+ rescue OAuth::Unauthorized => e
86
+ stderr.puts "A problem occurred while attempting to obtain an access token:"
87
+ stderr.puts e
88
+ stderr.puts e.request.body
82
89
  end
83
90
  rescue OAuth::Unauthorized => e
84
- stderr.puts "A problem occurred while attempting to obtain an access token:"
91
+ stderr.puts "A problem occurred while attempting to authorize:"
85
92
  stderr.puts e
93
+ stderr.puts e.request.body
86
94
  end
87
95
  when "query"
88
96
  consumer = OAuth::Consumer.new \
@@ -156,6 +164,8 @@ module OAuth
156
164
  else
157
165
  stdout.puts request.oauth_signature
158
166
  end
167
+ when "version"
168
+ puts "OAuth for Ruby #{OAuth::VERSION}"
159
169
  end
160
170
  else
161
171
  usage
@@ -169,7 +179,7 @@ module OAuth
169
179
  parse_options(arguments[0..-1])
170
180
  end
171
181
 
172
- def option_parser(arguments)
182
+ def option_parser(arguments = "")
173
183
  # TODO add realm parameter
174
184
  # TODO add user-agent parameter
175
185
  option_parser = OptionParser.new do |opts|
@@ -208,6 +218,8 @@ module OAuth
208
218
 
209
219
  ## Options for signing and making requests
210
220
 
221
+ opts.separator("\n options for signing and querying")
222
+
211
223
  opts.on("--method METHOD", "Specifies the method (e.g. GET) to use when signing.") do |v|
212
224
  options[:method] = v
213
225
  end
@@ -244,8 +256,12 @@ module OAuth
244
256
  options[:uri] = v
245
257
  end
246
258
 
247
- opts.on("--version VERSION", "Specifies the OAuth version to use.") do |v|
248
- options[:oauth_version] = v
259
+ opts.on(:OPTIONAL, "--version VERSION", "Specifies the OAuth version to use.") do |v|
260
+ if v
261
+ options[:oauth_version] = v
262
+ else
263
+ @command = "version"
264
+ end
249
265
  end
250
266
 
251
267
  opts.on("--no-version", "Omit oauth_version.") do
@@ -263,6 +279,8 @@ module OAuth
263
279
 
264
280
  ## Options for authorization
265
281
 
282
+ opts.separator("\n options for authorization")
283
+
266
284
  opts.on("--access-token-url URL", "Specifies the access token URL.") do |v|
267
285
  options[:access_token_url] = v
268
286
  end
@@ -278,6 +296,10 @@ module OAuth
278
296
  opts.on("--request-token-url URL", "Specifies the request token URL.") do |v|
279
297
  options[:request_token_url] = v
280
298
  end
299
+
300
+ opts.on("--scope SCOPE", "Specifies the scope (Google-specific).") do |v|
301
+ options[:scope] = v
302
+ end
281
303
  end
282
304
  end
283
305
 
@@ -316,6 +338,8 @@ module OAuth
316
338
  options[:oauth_consumer_key] && options[:oauth_consumer_secret] &&
317
339
  options[:access_token_url] && options[:authorize_url] &&
318
340
  options[:request_token_url]
341
+ when "version"
342
+ true
319
343
  else
320
344
  options[:oauth_consumer_key] && options[:oauth_consumer_secret] &&
321
345
  options[:method] && options[:uri]
@@ -25,6 +25,7 @@ module OAuth
25
25
  :authorize_path => '/oauth/authorize',
26
26
  :access_token_path => '/oauth/access_token',
27
27
 
28
+ :proxy => nil,
28
29
  # How do we send the oauth values to the server see
29
30
  # http://oauth.net/core/1.0/#consumer_req_param for more info
30
31
  #
@@ -254,6 +255,10 @@ module OAuth
254
255
  @options.has_key?(:access_token_url)
255
256
  end
256
257
 
258
+ def proxy
259
+ @options[:proxy]
260
+ end
261
+
257
262
  protected
258
263
 
259
264
  # Instantiates the http object
@@ -264,7 +269,12 @@ module OAuth
264
269
  our_uri = URI.parse(_url)
265
270
  end
266
271
 
267
- http_object = Net::HTTP.new(our_uri.host, our_uri.port)
272
+ if proxy.nil?
273
+ http_object = Net::HTTP.new(our_uri.host, our_uri.port)
274
+ else
275
+ proxy_uri = proxy.is_a?(URI) ? proxy : URI.parse(proxy)
276
+ http_object = Net::HTTP.new(our_uri.host, our_uri.port, proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password)
277
+ end
268
278
 
269
279
  http_object.use_ssl = (our_uri.scheme == 'https')
270
280
 
@@ -284,7 +294,7 @@ module OAuth
284
294
  http_method = http_method.to_sym
285
295
 
286
296
  if [:post, :put].include?(http_method)
287
- data = arguments.shift
297
+ data = (arguments.shift || {}).reject { |k,v| v.nil? }
288
298
  end
289
299
 
290
300
  headers = arguments.first.is_a?(Hash) ? arguments.shift : {}
@@ -1,4 +1,5 @@
1
1
  require 'active_support'
2
+ require 'action_controller'
2
3
  require 'action_controller/request'
3
4
  require 'oauth/request_proxy/base'
4
5
  require 'uri'
data/lib/oauth/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OAuth #:nodoc:
2
- VERSION = '0.3.4.1'
2
+ VERSION = '0.3.5'
3
3
  end
data/oauth.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{oauth}
5
- s.version = "0.3.4.1"
5
+ s.version = "0.3.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Pelle Braendgaard", "Blaine Cook", "Larry Halff", "Jesse Clark", "Jon Crosby", "Seth Fitzsimmons", "Matt Sanford"]
9
- s.date = %q{2009-05-06}
9
+ s.date = %q{2009-06-03}
10
10
  s.default_executable = %q{oauth}
11
11
  s.description = %q{OAuth Core Ruby implementation}
12
12
  s.email = %q{oauth-ruby@googlegroups.com}
@@ -13,6 +13,7 @@ class ConsumerTest < Test::Unit::TestCase
13
13
  'consumer_key_86cad9', '5888bf0345e5d237',
14
14
  {
15
15
  :site=>"http://blabla.bla",
16
+ :proxy=>"http://user:password@proxy.bla:8080",
16
17
  :request_token_path=>"/oauth/example/request_token.php",
17
18
  :access_token_path=>"/oauth/example/access_token.php",
18
19
  :authorize_path=>"/oauth/example/authorize.php",
@@ -31,6 +32,7 @@ class ConsumerTest < Test::Unit::TestCase
31
32
  assert_equal "consumer_key_86cad9",@consumer.key
32
33
  assert_equal "5888bf0345e5d237",@consumer.secret
33
34
  assert_equal "http://blabla.bla",@consumer.site
35
+ assert_equal "http://user:password@proxy.bla:8080",@consumer.proxy
34
36
  assert_equal "/oauth/example/request_token.php",@consumer.request_token_path
35
37
  assert_equal "/oauth/example/access_token.php",@consumer.access_token_path
36
38
  assert_equal "http://blabla.bla/oauth/example/request_token.php",@consumer.request_token_url
@@ -50,6 +52,7 @@ class ConsumerTest < Test::Unit::TestCase
50
52
  assert_equal "key",@consumer.key
51
53
  assert_equal "secret",@consumer.secret
52
54
  assert_equal "http://twitter.com",@consumer.site
55
+ assert_nil @consumer.proxy
53
56
  assert_equal "/oauth/request_token",@consumer.request_token_path
54
57
  assert_equal "/oauth/access_token",@consumer.access_token_path
55
58
  assert_equal "http://twitter.com/oauth/request_token",@consumer.request_token_url
data/website/index.html CHANGED
@@ -33,7 +33,7 @@
33
33
  <h1>Ruby OAuth GEM</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/oauth"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/oauth" class="numbers">0.3.4</a>
36
+ <a href="http://rubyforge.org/projects/oauth" class="numbers">0.3.5</a>
37
37
  </div>
38
38
  <h2>What</h2>
39
39
  <p>This is a RubyGem for implementing both OAuth clients and servers in Ruby applications.</p>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mojodna-oauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4.1
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pelle Braendgaard
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2009-05-06 00:00:00 -07:00
18
+ date: 2009-06-03 00:00:00 -07:00
19
19
  default_executable: oauth
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency