httpi 2.2.7 → 2.3.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 +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/httpi.rb +1 -1
- data/lib/httpi/adapter/base.rb +0 -1
- data/lib/httpi/adapter/curb.rb +7 -4
- data/lib/httpi/adapter/net_http.rb +1 -1
- data/lib/httpi/auth/ssl.rb +1 -1
- data/lib/httpi/request.rb +3 -3
- data/lib/httpi/response.rb +2 -1
- data/lib/httpi/version.rb +1 -1
- data/spec/httpi/adapter/curb_spec.rb +4 -2
- data/spec/httpi/auth/ssl_spec.rb +8 -15
- data/spec/httpi/request_spec.rb +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06ac8ba040207b5a0590492395b374fdcab38691
|
4
|
+
data.tar.gz: 2c4f27ee87ca5200523f3191081e243704504915
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b81b972077db62ec3f8896a80d9a95c410dbddffcfbf681cdb0f7d322122fefb8c3b04ebfd92a403e8812a9f1c59fe333a15a4d4ed514a3fb3b48caf1ace6539
|
7
|
+
data.tar.gz: 3afa2f7660560043a23d03de67bacba6909951eb62dd23c1ad071dd893278260883b3c91d066758928d66a8297f368cb1c56a0cf9b77dd25819fe617c0c65271
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
### 2.3.0
|
2
|
+
|
3
|
+
* Improvement: [#136](https://github.com/savonrb/httpi/pull/136) Allow setting of ssl versions depending on what versions OpenSSL provides at runtime.
|
4
|
+
|
5
|
+
### 2.2.8 (edge)
|
6
|
+
|
7
|
+
* Improvement: [#133](https://github.com/savonrb/httpi/pull/133) Add 'query' to available attribute writers so it can be set with 'new'
|
8
|
+
* Fix: [#132](https://github.com/savonrb/httpi/pull/132) Fix a few warnings, among which a circular require
|
9
|
+
|
1
10
|
### 2.2.7
|
2
11
|
|
3
12
|
* Fix: [#131](https://github.com/savonrb/httpi/pull/131) Excon adapter should respect :ssl_version
|
data/lib/httpi.rb
CHANGED
@@ -109,7 +109,7 @@ module HTTPI
|
|
109
109
|
builder_name = builder.to_s.capitalize
|
110
110
|
begin
|
111
111
|
builder = HTTPI::QueryBuilder.const_get(builder_name)
|
112
|
-
rescue NameError
|
112
|
+
rescue NameError
|
113
113
|
raise ArgumentError, "Invalid builder. Available builders are: [:flat, :nested]"
|
114
114
|
end
|
115
115
|
end
|
data/lib/httpi/adapter/base.rb
CHANGED
data/lib/httpi/adapter/curb.rb
CHANGED
@@ -111,14 +111,17 @@ module HTTPI
|
|
111
111
|
end
|
112
112
|
|
113
113
|
@client.ssl_version = case ssl.ssl_version
|
114
|
-
when :
|
115
|
-
when :
|
116
|
-
when :
|
114
|
+
when :TLSv1_2 then 1
|
115
|
+
when :TLSv1_1 then 1
|
116
|
+
when :TLSv1 then 1
|
117
|
+
when :SSLv2 then 2
|
118
|
+
when :SSLv23 then 2
|
119
|
+
when :SSLv3 then 3
|
117
120
|
end
|
118
121
|
end
|
119
122
|
|
120
123
|
def respond_with(client)
|
121
|
-
|
124
|
+
headers = parse_header_string(client.header_str).last
|
122
125
|
Response.new client.response_code, headers, client.body_str
|
123
126
|
end
|
124
127
|
|
@@ -170,7 +170,7 @@ module HTTPI
|
|
170
170
|
end
|
171
171
|
|
172
172
|
request_client = request_class.new @request.url.request_uri, @request.headers
|
173
|
-
request_client.basic_auth
|
173
|
+
request_client.basic_auth(*@request.auth.credentials) if @request.auth.basic?
|
174
174
|
|
175
175
|
if @request.auth.digest?
|
176
176
|
raise NotSupportedError, "Net::HTTP does not support HTTP digest authentication"
|
data/lib/httpi/auth/ssl.rb
CHANGED
@@ -10,7 +10,7 @@ module HTTPI
|
|
10
10
|
|
11
11
|
VERIFY_MODES = [:none, :peer, :fail_if_no_peer_cert, :client_once]
|
12
12
|
CERT_TYPES = [:pem, :der]
|
13
|
-
SSL_VERSIONS =
|
13
|
+
SSL_VERSIONS = OpenSSL::SSL::SSLContext::METHODS.reject { |method| method.match /server|client/ }.sort.reverse
|
14
14
|
|
15
15
|
# Returns whether SSL configuration is present.
|
16
16
|
def present?
|
data/lib/httpi/request.rb
CHANGED
@@ -11,7 +11,7 @@ module HTTPI
|
|
11
11
|
class Request
|
12
12
|
|
13
13
|
# Available attribute writers.
|
14
|
-
ATTRIBUTES = [:url, :proxy, :headers, :body, :open_timeout, :read_timeout, :follow_redirect]
|
14
|
+
ATTRIBUTES = [:url, :proxy, :headers, :body, :open_timeout, :read_timeout, :follow_redirect, :query]
|
15
15
|
|
16
16
|
# Accepts a Hash of +args+ to mass assign attributes and authentication credentials.
|
17
17
|
def initialize(args = {})
|
@@ -82,9 +82,9 @@ module HTTPI
|
|
82
82
|
# or an Array of `HTTPI::Cookie` objects.
|
83
83
|
def set_cookies(object_or_array)
|
84
84
|
if object_or_array.respond_to?(:cookies)
|
85
|
-
cookie_store.add
|
85
|
+
cookie_store.add(*object_or_array.cookies)
|
86
86
|
else
|
87
|
-
cookie_store.add
|
87
|
+
cookie_store.add(*object_or_array)
|
88
88
|
end
|
89
89
|
|
90
90
|
cookies = cookie_store.fetch
|
data/lib/httpi/response.rb
CHANGED
@@ -24,7 +24,8 @@ module HTTPI
|
|
24
24
|
self.raw_body = body
|
25
25
|
end
|
26
26
|
|
27
|
-
attr_accessor :code, :headers, :raw_body
|
27
|
+
attr_accessor :code, :headers, :raw_body
|
28
|
+
attr_writer :attachments
|
28
29
|
|
29
30
|
# Returns whether the HTTP response is considered successful.
|
30
31
|
def error?
|
data/lib/httpi/version.rb
CHANGED
@@ -238,8 +238,10 @@ unless RUBY_PLATFORM =~ /java/
|
|
238
238
|
adapter.request(:get)
|
239
239
|
end
|
240
240
|
|
241
|
-
it 'to 2 when ssl_version is specified as SSLv2' do
|
242
|
-
|
241
|
+
it 'to 2 when ssl_version is specified as SSLv2/SSLv23' do
|
242
|
+
version = OpenSSL::SSL::SSLContext::METHODS.reject { |method| method.match /server|client/ }
|
243
|
+
version = version.select { |method| method.to_s.match /SSLv2|SSLv23/ }.first
|
244
|
+
request.auth.ssl.ssl_version = version
|
243
245
|
curb.expects(:ssl_version=).with(2)
|
244
246
|
|
245
247
|
adapter.request(:get)
|
data/spec/httpi/auth/ssl_spec.rb
CHANGED
@@ -2,6 +2,9 @@ require "spec_helper"
|
|
2
2
|
require "httpi/auth/ssl"
|
3
3
|
|
4
4
|
describe HTTPI::Auth::SSL do
|
5
|
+
before(:all) do
|
6
|
+
@ssl_versions = OpenSSL::SSL::SSLContext::METHODS.reject { |method| method.match /server|client/ }.sort.reverse
|
7
|
+
end
|
5
8
|
|
6
9
|
describe "VERIFY_MODES" do
|
7
10
|
it "contains the supported SSL verify modes" do
|
@@ -136,32 +139,22 @@ describe HTTPI::Auth::SSL do
|
|
136
139
|
|
137
140
|
describe "SSL_VERSIONS" do
|
138
141
|
it "contains the supported SSL versions" do
|
139
|
-
expect(HTTPI::Auth::SSL::SSL_VERSIONS).to eq(
|
142
|
+
expect(HTTPI::Auth::SSL::SSL_VERSIONS).to eq(@ssl_versions)
|
140
143
|
end
|
141
144
|
end
|
142
145
|
|
143
146
|
describe "#ssl_version" do
|
144
147
|
subject { HTTPI::Auth::SSL.new }
|
145
148
|
|
146
|
-
it
|
147
|
-
subject.ssl_version =
|
148
|
-
expect(subject.ssl_version).to eq(
|
149
|
-
end
|
150
|
-
|
151
|
-
it 'returns the SSL version for :SSLv2' do
|
152
|
-
subject.ssl_version = :SSLv2
|
153
|
-
expect(subject.ssl_version).to eq(:SSLv2)
|
154
|
-
end
|
155
|
-
|
156
|
-
it 'returns the SSL version for :SSLv3' do
|
157
|
-
subject.ssl_version = :SSLv3
|
158
|
-
expect(subject.ssl_version).to eq(:SSLv3)
|
149
|
+
it "returns the SSL version" do
|
150
|
+
subject.ssl_version = @ssl_versions.first
|
151
|
+
expect(subject.ssl_version).to eq(@ssl_versions.first)
|
159
152
|
end
|
160
153
|
|
161
154
|
it 'raises ArgumentError if the version is unsupported' do
|
162
155
|
expect { ssl.ssl_version = :ssl_fail }.
|
163
156
|
to raise_error(ArgumentError, "Invalid SSL version :ssl_fail\n" +
|
164
|
-
"Please specify one of
|
157
|
+
"Please specify one of #{@ssl_versions}")
|
165
158
|
end
|
166
159
|
end
|
167
160
|
|
data/spec/httpi/request_spec.rb
CHANGED
@@ -11,9 +11,10 @@ describe HTTPI::Request do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "accepts a Hash of accessors to set" do
|
14
|
-
request = HTTPI::Request.new :url => "http://example.com", :open_timeout => 30
|
15
|
-
expect(request.url).to eq(URI("http://example.com"))
|
14
|
+
request = HTTPI::Request.new :url => "http://example.com", :open_timeout => 30, :query => { key: "value" }
|
15
|
+
expect(request.url).to eq(URI("http://example.com?key=value"))
|
16
16
|
expect(request.open_timeout).to eq(30)
|
17
|
+
expect(request.query).to eq("key=value")
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
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.
|
4
|
+
version: 2.3.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-
|
12
|
+
date: 2014-11-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|