mojodna-oauth 0.3.1.4 → 0.3.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/lib/oauth/cli.rb CHANGED
@@ -106,7 +106,7 @@ module OAuth
106
106
  options[:oauth_signature_method] = "HMAC-SHA1"
107
107
  options[:oauth_timestamp] = OAuth::Helper.generate_timestamp
108
108
  options[:oauth_version] = "1.0"
109
- options[:params] = ""
109
+ options[:params] = []
110
110
 
111
111
  opts.on("--consumer-key KEY", "Specifies the consumer key to use.") do |v|
112
112
  options[:oauth_consumer_key] = v
@@ -125,7 +125,7 @@ module OAuth
125
125
  end
126
126
 
127
127
  opts.on("--parameters PARAMS", "Specifies the parameters to use when signing.") do |v|
128
- options[:params] = v
128
+ options[:params] << v
129
129
  end
130
130
 
131
131
  opts.on("--signature-method METHOD", "Specifies the signature method to use; defaults to HMAC-SHA1.") do |v|
@@ -176,9 +176,13 @@ module OAuth
176
176
  end
177
177
 
178
178
  def prepare_parameters
179
- escaped_pairs = options[:params].split(/[&,]/).collect do |pair|
180
- Hash[*pair.split("=")].collect do |k,v|
181
- [CGI.escape(k.strip), CGI.escape(v.strip)] * "="
179
+ escaped_pairs = options[:params].collect do |pair|
180
+ if pair =~ /:/
181
+ Hash[*pair.split(":", 2)].collect do |k,v|
182
+ [CGI.escape(k.strip), CGI.escape(v.strip)] * "="
183
+ end
184
+ else
185
+ pair
182
186
  end
183
187
  end
184
188
 
@@ -37,7 +37,7 @@ module OAuth::RequestProxy
37
37
  params << header_params.to_query
38
38
  params << request.query_string unless request.query_string.blank?
39
39
  if request.content_type == Mime::Type.lookup("application/x-www-form-urlencoded")
40
- params << CGI.unescape(request.raw_post)
40
+ params << request.raw_post
41
41
  end
42
42
  end
43
43
 
@@ -45,7 +45,7 @@ module OAuth::RequestProxy
45
45
  join('&').split('&').
46
46
  reject { |kv| kv =~ /^oauth_signature=.*/}.
47
47
  reject(&:blank?).
48
- map { |p| p.split('=') }
48
+ map { |p| p.split('=').map{|esc| CGI.unescape(esc)} }
49
49
  end
50
50
 
51
51
  protected
data/lib/oauth/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OAuth #:nodoc:
2
- VERSION = '0.3.1.4'
2
+ VERSION = '0.3.1.5'
3
3
  end
data/oauth.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{oauth}
5
- s.version = "0.3.1.4"
5
+ s.version = "0.3.1.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"]
@@ -18,6 +18,13 @@ class ActionControllerRequestProxyTest < Test::Unit::TestCase
18
18
  request_proxy({ :message => { :body => 'This is a test' }}).parameters_for_signature
19
19
  )
20
20
  end
21
+
22
+ def test_parameter_values_with_amps_should_not_break_parameter_parsing
23
+ assert_equal(
24
+ [['message[body]', 'http://foo.com/?a=b&c=d']],
25
+ request_proxy({ :message => { :body => 'http://foo.com/?a=b&c=d'}}).parameters_for_signature
26
+ )
27
+ end
21
28
 
22
29
  def test_parameter_keys_should_preserve_brackets_from_array
23
30
  assert_equal(
@@ -25,4 +32,14 @@ class ActionControllerRequestProxyTest < Test::Unit::TestCase
25
32
  request_proxy({ :foo => [123, 456] }).parameters_for_signature.sort
26
33
  )
27
34
  end
35
+
36
+ def test_query_string_parameter_values_should_be_cgi_unescaped
37
+ request = request_proxy do |r|
38
+ r.env['QUERY_STRING'] = 'url=http%3A%2F%2Ffoo.com%2F%3Fa%3Db%26c%3Dd'
39
+ end
40
+ assert_equal(
41
+ [['url', 'http://foo.com/?a=b&c=d']],
42
+ request.parameters_for_signature.sort
43
+ )
44
+ end
28
45
  end
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.1.4
4
+ version: 0.3.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pelle Braendgaard