# File lib/AWS.rb, line 63
63:   def AWS.canonical_string(params, host, method="POST", base="/")
64:     # Sort, and encode parameters into a canonical string.
65:     sorted_params = params.sort {|x,y| x[0] <=> y[0]}
66:     encoded_params = sorted_params.collect do |p|
67:       encoded = (CGI::escape(p[0].to_s) +
68:                  "=" + CGI::escape(p[1].to_s))
69:       # Ensure spaces are encoded as '%20', not '+'
70:       encoded = encoded.gsub('+', '%20')
71:       # According to RFC3986 (the scheme for values expected by signing requests), '~' 
72:       # should not be encoded
73:       encoded = encoded.gsub('%7E', '~')
74:     end
75:     sigquery = encoded_params.join("&")
76: 
77:     # Generate the request description string
78:     req_desc =
79:       method + "\n" +
80:       host + "\n" +
81:       base + "\n" +
82:       sigquery
83: 
84:   end