Added a request proxy for our HTTP request representations.
git-svn-id: https://google-api-ruby-client.googlecode.com/svn/trunk@26 c1d61fac-ed7f-fcc1-18f7-ff78120a04ef
This commit is contained in:
		
							parent
							
								
									d61916b110
								
							
						
					
					
						commit
						5b71f47a4d
					
				|  | @ -0,0 +1,82 @@ | ||||||
|  | require 'oauth/request_proxy/base' | ||||||
|  | require 'addressable/uri' | ||||||
|  | 
 | ||||||
|  | module OAuth | ||||||
|  |   module RequestProxy | ||||||
|  |     class SimpleRequest < OAuth::RequestProxy::Base | ||||||
|  |       proxies Array | ||||||
|  | 
 | ||||||
|  |       def method | ||||||
|  |         return @request[0] | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       def uri | ||||||
|  |         return @request[1] | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       def headers | ||||||
|  |         @headers ||= (begin | ||||||
|  |           headers_hash = {} | ||||||
|  |           @request[2].each do |key, value| | ||||||
|  |             headers_hash[key] = value | ||||||
|  |           end | ||||||
|  |           headers_hash | ||||||
|  |         end) | ||||||
|  |         return @headers | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       def body | ||||||
|  |         @body ||= (begin | ||||||
|  |           body_string = "" | ||||||
|  |           @request[3].each do |chunk| | ||||||
|  |             body_string += chunk | ||||||
|  |           end | ||||||
|  |           body_string | ||||||
|  |         end) | ||||||
|  |         return @body | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       def parameters | ||||||
|  |         @parameters ||= (begin | ||||||
|  |           self.query_parameters.merge( | ||||||
|  |             self.post_parameters | ||||||
|  |           ) | ||||||
|  |         end) | ||||||
|  |         return @parameters | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       def query_parameters | ||||||
|  |         @query_parameters ||= (begin | ||||||
|  |           Addressable::URI.parse(self.uri).normalize.query_values || {} | ||||||
|  |         end) | ||||||
|  |         return @query_parameters | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       def post_parameters | ||||||
|  |         @post_parameters ||= (begin | ||||||
|  |           # We could be more liberal here and aggressively downcase, | ||||||
|  |           # but it's cleaner if we force the usage of the canonical form, | ||||||
|  |           # and we're just going to replace this eventually anyways. | ||||||
|  |           if self.method == 'POST' && self.headers['Content-Type'] ==  | ||||||
|  |               'application/x-www-form-urlencoded' | ||||||
|  |             # Even though an Array would be better here, we're stuck using a | ||||||
|  |             # Hash because that's what the 'oauth' gem expects. | ||||||
|  |             parameter_hash = {} | ||||||
|  |             for key, value in Addressable::URI.form_unencode(self.body) | ||||||
|  |               parameter_hash[key] = value | ||||||
|  |             end | ||||||
|  |             parameter_hash | ||||||
|  |           else | ||||||
|  |             {} | ||||||
|  |           end | ||||||
|  |         end) | ||||||
|  |         return @post_parameters | ||||||
|  |       end | ||||||
|  |        | ||||||
|  |       def normalized_uri | ||||||
|  |         @normalized_uri ||= Addressable::URI.parse(self.uri).normalize.to_str | ||||||
|  |         return @normalized_uri | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
		Loading…
	
		Reference in New Issue