httpi 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 06ac8ba040207b5a0590492395b374fdcab38691
4
- data.tar.gz: 2c4f27ee87ca5200523f3191081e243704504915
3
+ metadata.gz: 7fdb3bb23a9cba076a235fac76aa7aa0aa04a803
4
+ data.tar.gz: 7740630503dc0ffedc3f909f1418d45f0a443156
5
5
  SHA512:
6
- metadata.gz: b81b972077db62ec3f8896a80d9a95c410dbddffcfbf681cdb0f7d322122fefb8c3b04ebfd92a403e8812a9f1c59fe333a15a4d4ed514a3fb3b48caf1ace6539
7
- data.tar.gz: 3afa2f7660560043a23d03de67bacba6909951eb62dd23c1ad071dd893278260883b3c91d066758928d66a8297f368cb1c56a0cf9b77dd25819fe617c0c65271
6
+ metadata.gz: 14a720954983eecb0fd4497f2c0e87269ceb5373c0856e19d4de9b7a102c7adba108e8fb44b020a80dc038b820355efffff9dfcdf0dad94f24668953c4d9b38d
7
+ data.tar.gz: 5f8119a473f8daf6c7dfd597a172002ead1f5b1fceea7456c083e14a9daee93da63d23a7018030103389a3397ae9e6df986780e032a7612f5d39a482b3619f5c
@@ -2,4 +2,7 @@ language: "ruby"
2
2
  script: "bundle exec rake ci"
3
3
  rvm:
4
4
  - 1.9.3
5
+ - 2.0
6
+ - 2.1
7
+ - 2.2
5
8
  - jruby-19mode
@@ -1,9 +1,10 @@
1
- ### 2.3.0
1
+ ### 2.4.0
2
2
 
3
- * Improvement: [#136](https://github.com/savonrb/httpi/pull/136) Allow setting of ssl versions depending on what versions OpenSSL provides at runtime.
3
+ * Formally drop support for ruby 1.8.7
4
4
 
5
- ### 2.2.8 (edge)
5
+ ### 2.3.0
6
6
 
7
+ * Improvement: [#136](https://github.com/savonrb/httpi/pull/136) Allow setting of ssl versions depending on what versions OpenSSL provides at runtime.
7
8
  * Improvement: [#133](https://github.com/savonrb/httpi/pull/133) Add 'query' to available attribute writers so it can be set with 'new'
8
9
  * Fix: [#132](https://github.com/savonrb/httpi/pull/132) Fix a few warnings, among which a circular require
9
10
 
@@ -11,6 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.homepage = "http://github.com/savonrb/#{s.name}"
12
12
  s.summary = "Common interface for Ruby's HTTP libraries"
13
13
  s.description = s.summary
14
+ s.required_ruby_version = '>= 1.9.2'
14
15
 
15
16
  s.rubyforge_project = s.name
16
17
  s.license = 'MIT'
@@ -1,3 +1,4 @@
1
+ require "uri"
1
2
  require "httpi/version"
2
3
  require "httpi/logger"
3
4
  require "httpi/request"
@@ -159,8 +160,8 @@ module HTTPI
159
160
  response = adapter_class.request(method)
160
161
 
161
162
  if response && HTTPI::Response::RedirectResponseCodes.member?(response.code) && request.follow_redirect?
162
- log("Following redirect: '#{response.headers['location']}'.")
163
- request.url = response.headers['location']
163
+ request.url = URI.join(request.url, response.headers['location'])
164
+ log("Following redirect: '#{request.url}'.")
164
165
  return request(method, request, adapter)
165
166
  end
166
167
 
@@ -66,9 +66,10 @@ module HTTPI
66
66
  opts[:ssl_ca_file] = ssl.ca_cert_file if ssl.ca_cert_file
67
67
  opts[:client_cert] = ssl.cert if ssl.cert
68
68
  opts[:client_key] = ssl.cert_key if ssl.cert_key
69
- opts[:ssl_version] = ssl.ssl_version if ssl.ssl_version
70
69
  end
71
70
 
71
+ opts[:ssl_version] = ssl.ssl_version if ssl.ssl_version
72
+
72
73
  opts
73
74
  end
74
75
 
@@ -5,15 +5,6 @@ require "httpi/response"
5
5
  require 'kconv'
6
6
  require 'socket'
7
7
 
8
- begin
9
- require 'net/ntlm'
10
- require 'net/ntlm/version' unless Net::NTLM.const_defined?(:VERSION)
11
- unless Net::NTLM::VERSION::STRING >= '0.3.2'
12
- raise ArgumentError, 'Invalid version of rubyntlm. Please use v0.3.2+.'
13
- end
14
- rescue LoadError
15
- end
16
-
17
8
  module HTTPI
18
9
  module Adapter
19
10
 
@@ -24,8 +15,9 @@ module HTTPI
24
15
  class NetHTTP < Base
25
16
 
26
17
  register :net_http, :deps => %w(net/https)
27
-
28
18
  def initialize(request)
19
+ check_net_ntlm_version!
20
+
29
21
  @request = request
30
22
  @client = create_client
31
23
  end
@@ -58,6 +50,16 @@ module HTTPI
58
50
  end
59
51
 
60
52
  private
53
+ def check_net_ntlm_version!
54
+ begin
55
+ require 'net/ntlm'
56
+ require 'net/ntlm/version' unless Net::NTLM.const_defined?(:VERSION)
57
+ unless Net::NTLM::VERSION::STRING >= '0.3.2'
58
+ raise ArgumentError, 'Invalid version of rubyntlm. Please use v0.3.2+.'
59
+ end
60
+ rescue LoadError
61
+ end
62
+ end
61
63
 
62
64
  def perform(http, http_request, &block)
63
65
  http.request http_request, &block
@@ -1,3 +1,3 @@
1
1
  module HTTPI
2
- VERSION = '2.3.0'
2
+ VERSION = '2.4.0'
3
3
  end
@@ -222,7 +222,7 @@ describe HTTPI do
222
222
  end
223
223
 
224
224
  describe ".request" do
225
- let(:request) { HTTPI::Request.new('http://example.com') }
225
+ let(:request) { HTTPI::Request.new('http://example.com/foo/') }
226
226
 
227
227
  it "allows custom HTTP methods" do
228
228
  httpclient.any_instance.expects(:request).with(:custom)
@@ -238,7 +238,33 @@ describe HTTPI do
238
238
  response = HTTPI::Response.new(200, {}, 'success')
239
239
 
240
240
  httpclient.any_instance.expects(:request).twice.with(:custom).returns(redirect, response)
241
- request.expects(:url=).with(redirect_location)
241
+ request.expects(:url=).with(URI.parse(redirect_location))
242
+
243
+ client.request(:custom, request, :httpclient)
244
+ end
245
+
246
+ it 'follows redirects with absolute path' do
247
+ request.follow_redirect = true
248
+ redirect_location = '/bar/foo'
249
+
250
+ redirect = HTTPI::Response.new(302, {'location' => redirect_location}, 'Moved')
251
+ response = HTTPI::Response.new(200, {}, 'success')
252
+
253
+ httpclient.any_instance.expects(:request).twice.with(:custom).returns(redirect, response)
254
+ request.expects(:url=).with(URI.parse('http://example.com/bar/foo'))
255
+
256
+ client.request(:custom, request, :httpclient)
257
+ end
258
+
259
+ it 'follows redirects with relative path' do
260
+ request.follow_redirect = true
261
+ redirect_location = 'bar/foo'
262
+
263
+ redirect = HTTPI::Response.new(302, {'location' => redirect_location}, 'Moved')
264
+ response = HTTPI::Response.new(200, {}, 'success')
265
+
266
+ httpclient.any_instance.expects(:request).twice.with(:custom).returns(redirect, response)
267
+ request.expects(:url=).with(URI.parse('http://example.com/foo/bar/foo'))
242
268
 
243
269
  client.request(:custom, request, :httpclient)
244
270
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httpi
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Harrington
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-12 00:00:00.000000000 Z
12
+ date: 2015-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -180,7 +180,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - ">="
182
182
  - !ruby/object:Gem::Version
183
- version: '0'
183
+ version: 1.9.2
184
184
  required_rubygems_version: !ruby/object:Gem::Requirement
185
185
  requirements:
186
186
  - - ">="