mirror of
				https://github.com/rest-client/rest-client.git
				synced 2022-11-09 13:49:40 -05:00 
			
		
		
		
	credentials sent via http basic auth
This commit is contained in:
		
							parent
							
								
									a9f62bf573
								
							
						
					
					
						commit
						15c4bab527
					
				
					 3 changed files with 38 additions and 1 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1 +1,2 @@
 | 
			
		|||
rdoc
 | 
			
		||||
pkg
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ module RestClient
 | 
			
		|||
 | 
			
		||||
	# Internal class used to build and execute the request.
 | 
			
		||||
	class Request
 | 
			
		||||
		attr_reader :method, :url, :payload, :headers
 | 
			
		||||
		attr_reader :method, :url, :payload, :headers, :user, :password
 | 
			
		||||
 | 
			
		||||
		def self.execute(args)
 | 
			
		||||
			new(args).execute
 | 
			
		||||
| 
						 | 
				
			
			@ -42,6 +42,8 @@ module RestClient
 | 
			
		|||
			@url = args[:url] or raise ArgumentError, "must pass :url"
 | 
			
		||||
			@payload = args[:payload]
 | 
			
		||||
			@headers = args[:headers] || {}
 | 
			
		||||
			@user = args[:user]
 | 
			
		||||
			@password = args[:password]
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		def execute
 | 
			
		||||
| 
						 | 
				
			
			@ -84,11 +86,17 @@ module RestClient
 | 
			
		|||
		class Unauthorized < Exception; end
 | 
			
		||||
 | 
			
		||||
		def transmit(uri, req, payload)
 | 
			
		||||
			setup_credentials(req)
 | 
			
		||||
 | 
			
		||||
			Net::HTTP.start(uri.host, uri.port) do |http|
 | 
			
		||||
				process_result http.request(req, payload || "")
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		def setup_credentials(req)
 | 
			
		||||
			req.basic_auth(user, password) if user
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		def process_result(res)
 | 
			
		||||
			if %w(200 201 202).include? res.code
 | 
			
		||||
				res.body
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -98,6 +98,34 @@ describe RestClient do
 | 
			
		|||
			@request.transmit(@uri, 'req', nil)
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		it "sets up the credentials prior to the request" do
 | 
			
		||||
			http = mock("net::http connection")
 | 
			
		||||
			Net::HTTP.should_receive(:start).and_yield(http)
 | 
			
		||||
			http.stub!(:request)
 | 
			
		||||
			@request.stub!(:process_result)
 | 
			
		||||
 | 
			
		||||
			@request.stub!(:user).and_return('joe')
 | 
			
		||||
			@request.stub!(:password).and_return('mypass')
 | 
			
		||||
			@request.should_receive(:setup_credentials).with('req')
 | 
			
		||||
 | 
			
		||||
			@request.transmit(@uri, 'req', nil)
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		it "does not attempt to send any credentials if user is nil" do
 | 
			
		||||
			@request.stub!(:user).and_return(nil)
 | 
			
		||||
			req = mock("request")
 | 
			
		||||
			req.should_not_receive(:basic_auth)
 | 
			
		||||
			@request.setup_credentials(req)
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		it "does not attempt to send any credentials if user is nil" do
 | 
			
		||||
			@request.stub!(:user).and_return('joe')
 | 
			
		||||
			@request.stub!(:password).and_return('mypass')
 | 
			
		||||
			req = mock("request")
 | 
			
		||||
			req.should_receive(:basic_auth).with('joe', 'mypass')
 | 
			
		||||
			@request.setup_credentials(req)
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		it "execute calls execute_inner" do
 | 
			
		||||
			@request.should_receive(:execute_inner)
 | 
			
		||||
			@request.execute
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue