Changeset 2795

Show
Ignore:
Timestamp:
12/07/07 19:06:56 (13 months ago)
Author:
nskj77
Message:

lang/ruby/ssb: fix bug (request parameter is overwrritten if parameters have same key.)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/ssb/trunk/libs/ssb/request.rb

    r2695 r2795  
    8181    def parse_query(in_query) 
    8282      uri_base   = nil 
    83       uri_params = {} 
     83      uri_params = [] 
    8484 
    85       in_query.each do |key,value| 
    86         value = value.to_s unless value.instance_of?(String) 
     85      in_query.keys.each do |key| 
    8786        if key == 'ssb_q'       # request URI 
    88           uri_base = value.dup.untaint 
    89         else                    # passing parameters 
    90           uri_params[NKF::nkf('-s', key.dup.untaint)] = CGI.escape(NKF::nkf('-s', value.dup.untaint)) 
     87          uri_base = in_query[key].dup.untaint 
     88        else 
     89          uri_params << in_query[key].list.map do |value| 
     90            "#{NKF::nkf('-s', key.dup.untaint)}=#{CGI.escape(NKF::nkf('-s', value.dup.untaint))}" 
     91          end 
    9192        end 
    9293      end 
     
    99100          @uri = URI.parse(uri_base) 
    100101        else 
     102          query = uri_params.join('&') 
    101103          case method 
    102104          when 'GET' 
    103             @uri = URI.parse(uri_base + '?' + uri_params.map{|k,v| "#{k}=#{v}"}.join('&')) 
     105            @uri = URI.parse(uri_base + '?' + query) 
    104106          when 'POST' 
    105107            @uri = URI.parse(uri_base) 
    106             @post_params = uri_params.map{|k,v| "#{k}=#{v}"}.join('&') 
     108            @post_params = query 
    107109          end 
    108110        end