From 7ac6ed893fbfe9b4d4ce0e0ef18c3fecfbd48ff4 Mon Sep 17 00:00:00 2001 From: Rick Olson Date: Fri, 29 Sep 2006 16:25:49 +0000 Subject: Add Basic HTTP Authentication to ActiveResource (closes #6305). [jonathan] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5208 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activeresource/lib/active_resource/connection.rb | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'activeresource/lib') diff --git a/activeresource/lib/active_resource/connection.rb b/activeresource/lib/active_resource/connection.rb index 920e5a15b0..57471957e2 100644 --- a/activeresource/lib/active_resource/connection.rb +++ b/activeresource/lib/active_resource/connection.rb @@ -25,7 +25,7 @@ module ActiveResource class Connection - attr_accessor :site + attr_reader :site class << self def requests @@ -39,23 +39,27 @@ module ActiveResource end def initialize(site) - @site = site + self.site = site.is_a?(URI) ? site : URI.parse(site) + end + + def site=(site) + @site = site.is_a?(URI) ? site : URI.parse(site) end def get(path) - Hash.from_xml(request(:get, path).body) + Hash.from_xml(request(:get, path, build_request_headers).body) end def delete(path) - request(:delete, path, self.class.default_header) + request(:delete, path, build_request_headers) end def put(path, body = '') - request(:put, path, body, self.class.default_header) + request(:put, path, body, build_request_headers) end def post(path, body = '') - request(:post, path, body, self.class.default_header) + request(:post, path, body, build_request_headers) end private @@ -91,5 +95,13 @@ module ActiveResource @http end + + def build_request_headers + authorization_header.update(self.class.default_header) + end + + def authorization_header + (@site.user || @site.password ? { 'Authorization' => 'Basic ' + ["#{@site.user}:#{ @site.password}"].pack('m').delete("\r\n") } : {}) + end end end -- cgit v1.2.3