From ebe2abf051b91f9ab3ce0d96df0b7660d74dedcb Mon Sep 17 00:00:00 2001 From: Ari Summer Date: Sat, 23 May 2015 12:56:26 -0700 Subject: [PATCH] Update httpclient version to 2.6 --- Gemfile.lock | 2 +- lib/rets/http_client.rb | 13 +++++++------ rets.gemspec | 6 +++--- test/test_http_client.rb | 16 ++++++++++++++++ 4 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 test/test_http_client.rb diff --git a/Gemfile.lock b/Gemfile.lock index bbbc735..5e472d6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: rets (0.7.0.20150116133928) - httpclient (~> 2.4) + httpclient (~> 2.6.0) nokogiri (~> 1.5) GEM diff --git a/lib/rets/http_client.rb b/lib/rets/http_client.rb index e7eb8e6..62c628c 100644 --- a/lib/rets/http_client.rb +++ b/lib/rets/http_client.rb @@ -73,7 +73,7 @@ def rets_extra_headers if options[:ua_password] up = Digest::MD5.hexdigest "#{user_agent}:#{options[:ua_password]}" - session_id = http_cookie('RETS-Session-ID') || '' + session_id = http_cookie || '' digest = Digest::MD5.hexdigest "#{up}::#{session_id}:#{rets_version}" headers.merge!("RETS-UA-Authorization" => "Digest #{digest}") end @@ -81,11 +81,12 @@ def rets_extra_headers headers end - def http_cookie(name) - http.cookies.each do |c| - return c.value if c.name.downcase == name.downcase && c.match?(URI.parse(login_url)) - end - nil + def http_cookie + # Use CookieManager#cookie_value to obtain cookie value. + # This is independent of cookie implementation, i.e. CookieManager can use + # Webagent::Cookie or Http::Cookie underneath + cookie_values = http.cookie_manager.cookie_value URI.parse(login_url) + cookie_values.split("; ", 1).first.split("=").last if cookie_values end end end diff --git a/rets.gemspec b/rets.gemspec index c77dcbc..9ddb3f1 100644 --- a/rets.gemspec +++ b/rets.gemspec @@ -25,7 +25,7 @@ Gem::Specification.new do |s| s.specification_version = 4 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, ["~> 2.4"]) + s.add_runtime_dependency(%q, ["~> 2.6.0"]) s.add_runtime_dependency(%q, ["~> 1.5"]) s.add_development_dependency(%q, ["~> 4.0"]) s.add_development_dependency(%q, ["~> 0.11"]) @@ -33,7 +33,7 @@ Gem::Specification.new do |s| s.add_development_dependency(%q, ["~> 1.8"]) s.add_development_dependency(%q, ["~> 3.6"]) else - s.add_dependency(%q, ["~> 2.4"]) + s.add_dependency(%q, ["~> 2.6.0"]) s.add_dependency(%q, ["~> 1.5"]) s.add_dependency(%q, ["~> 4.0"]) s.add_dependency(%q, ["~> 0.11"]) @@ -42,7 +42,7 @@ Gem::Specification.new do |s| s.add_dependency(%q, ["~> 3.6"]) end else - s.add_dependency(%q, ["~> 2.4"]) + s.add_dependency(%q, ["~> 2.6.0"]) s.add_dependency(%q, ["~> 1.5"]) s.add_dependency(%q, ["~> 4.0"]) s.add_dependency(%q, ["~> 0.11"]) diff --git a/test/test_http_client.rb b/test/test_http_client.rb new file mode 100644 index 0000000..c3b72f0 --- /dev/null +++ b/test/test_http_client.rb @@ -0,0 +1,16 @@ +require_relative "helper" + +class TestHttpClient < MiniTest::Test + def setup + cm = WebAgent::CookieManager.new + str = "RETS-Session-ID=879392834723043209; path=/; domain=rets.rets.com; expires=Wednesday, 31-Dec-2037 12:00:00 GMT" + cm.parse(str, URI.parse("http://www.rets.rets.com")) + http = HTTPClient.new + http.cookie_manager = cm + @http_client = Rets::HttpClient.new(http, {}, nil, "http://rets.rets.com/somestate/login.aspx") + end + + def test_http_cookie_with_webagent_cookie + assert_equal "879392834723043209", @http_client.http_cookie + end +end