Permalink
Browse files

Bug fix: force_encoding UTF-8 after decode percent encoded string

  • Loading branch information...
1 parent 504b66c commit 597f70812031b89c4d5f2888348ba0020cfc44c6 nobuoka committed Apr 21, 2012
Showing with 8 additions and 7 deletions.
  1. +7 −6 lib/oauth_simple/helper_functions.rb
  2. +1 −1 lib/oauth_simple/request_param_list.rb
@@ -56,14 +56,15 @@ def encode_to_percent_encoded_str_pairs( str_pairs )
: enc_perenc( pair[0] ) + '=' + enc_perenc( pair[1] )
end.join( '&' )
end
-
+
+ # TODO これで良いか?
+ # UTF-8 エンコードされたものをパーセントエンコードしているとみなしてデコードする
+ # パーセントエンコードする際には文字列を UTF-8 エンコードするのは OAuth 1.0 の仕様
+ # だが, デコード時はこれでよいか?
def dec_perenc( str )
- return str.gsub( /%[a-fA-F\d]{2}/u ) do |s|
- e_str = s[1,2]
- d_str = [e_str].pack("H*")
- end
+ str.gsub( /%[a-fA-F\d]{2}/u ){ |s| [s[1,2]].pack('H*') }.force_encoding( Encoding::UTF_8 )
end
-
+
def enc_perenc( str )
str.gsub( /[^a-zA-Z\d\-\._\~]/u ) do |s|
d_str = s.unpack("H*")[0].upcase()
@@ -127,7 +127,7 @@ def get_list()
# http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2
def get_normalized_params_str()
@list.
- map do |e|
+ map do |e| # [ key, val ]
[ enc_perenc( e[0] ), e[1] ? enc_perenc( e[1] ) : '' ]
end.
sort do |a,b|

0 comments on commit 597f708

Please sign in to comment.