From dcfc29ef0dd935fa410c25b5fe2af9755a57b287 Mon Sep 17 00:00:00 2001 From: Tim Jarratt Date: Fri, 31 Jan 2014 23:00:18 -0800 Subject: [PATCH 1/2] Make ruby-ntlm an optional dependency Decided to bump the minor version number because this is technically a breaking change in the API. Fixes #107 --- httpi.gemspec | 10 +++++----- lib/httpi/adapter/net_http.rb | 14 +++++++++++--- lib/httpi/version.rb | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/httpi.gemspec b/httpi.gemspec index 2f1bc6e..b2a2e5e 100644 --- a/httpi.gemspec +++ b/httpi.gemspec @@ -16,12 +16,12 @@ Gem::Specification.new do |s| s.license = 'MIT' s.add_dependency 'rack' - s.add_dependency 'rubyntlm', '~> 0.3.2' - s.add_development_dependency 'rake', '~> 10.0' - s.add_development_dependency 'rspec', '~> 2.12' - s.add_development_dependency 'mocha', '~> 0.13' - s.add_development_dependency 'puma', '~> 2.3.2' + s.add_development_dependency 'rubyntlm', '~> 0.3.2' + s.add_development_dependency 'rake', '~> 10.0' + s.add_development_dependency 'rspec', '~> 2.12' + s.add_development_dependency 'mocha', '~> 0.13' + s.add_development_dependency 'puma', '~> 2.3.2' s.files = `git ls-files`.split("\n") s.require_path = 'lib' diff --git a/lib/httpi/adapter/net_http.rb b/lib/httpi/adapter/net_http.rb index 9ad8ea0..2dc1955 100644 --- a/lib/httpi/adapter/net_http.rb +++ b/lib/httpi/adapter/net_http.rb @@ -2,10 +2,18 @@ require "httpi/adapter/base" require "httpi/response" -require 'net/ntlm' require 'kconv' require 'socket' +begin + require 'net/ntlm' + unless Net::NTLM::VERSION::STRING >= '0.3.2' + raise ArgumentError('Invalid version of rubyntlm. Please use v0.3.2+') + end +rescue LoadError => e + HTTPI.logger.debug('Net::NTLM is not available') +end + module HTTPI module Adapter @@ -102,7 +110,7 @@ def negotiate_ntlm_auth(http, &requester) if auth_response.headers["WWW-Authenticate"] =~ /(NTLM|Negotiate) (.+)/ auth_token = $2 ntlm_message = Net::NTLM::Message.decode64(auth_token) - + message_builder = {} # copy the username and password from the authorization parameters message_builder[:user] = @request.auth.ntlm[0] @@ -114,7 +122,7 @@ def negotiate_ntlm_auth(http, &requester) else message_builder[:domain] = '' end - + ntlm_response = ntlm_message.response(message_builder , {:ntlmv2 => true}) # Finally add header of Authorization diff --git a/lib/httpi/version.rb b/lib/httpi/version.rb index 7343db1..3faa245 100644 --- a/lib/httpi/version.rb +++ b/lib/httpi/version.rb @@ -1,5 +1,5 @@ module HTTPI - VERSION = "2.1.0" + VERSION = "2.2.0" end From 2fd2468917d36e75f40994e4b30fbc2a6e30740e Mon Sep 17 00:00:00 2001 From: Roger Leite Date: Mon, 3 Feb 2014 07:56:22 -0200 Subject: [PATCH 2/2] Update Changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 872df8c..1139408 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +### 2.2.0 (edge) + +* Feature: [#108](https://github.com/savonrb/httpi/pull/108) Make `rubyntlm` gem, an optional dependency. + ### 2.1.0 (2013-07-22) * Feature: [#75](https://github.com/savonrb/httpi/pull/75) Rack adapter.