httpi 0.9.2 → 0.9.3
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.
- data/CHANGELOG.md +11 -0
- data/httpi.gemspec +1 -1
- data/lib/httpi/adapter.rb +0 -4
- data/lib/httpi/adapter/httpclient.rb +1 -1
- data/lib/httpi/adapter/net_http.rb +7 -7
- data/lib/httpi/version.rb +1 -1
- data/spec/httpi/adapter/curb_spec.rb +14 -14
- data/spec/httpi/adapter/httpclient_spec.rb +3 -1
- data/spec/httpi/adapter/net_http_spec.rb +20 -15
- data/spec/support/matchers.rb +11 -3
- metadata +8 -8
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
## 0.9.3 (2010-04-28)
|
2
|
+
|
3
|
+
* Fix: [issue 31](https://github.com/rubiii/httpi/issues/31) missing headers when using httpclient.
|
4
|
+
|
5
|
+
* Fix: [issue 30](https://github.com/rubiii/httpi/issues/30) fix for using SSL with Net::HTTP.
|
6
|
+
|
7
|
+
## 0.9.2 (2011-04-05)
|
8
|
+
|
9
|
+
* Fix: issues [161](https://github.com/rubiii/savon/issues/161) and [165](https://github.com/rubiii/savon/issues/165)
|
10
|
+
reported at [rubiii/savon](https://github.com/rubiii/savon).
|
11
|
+
|
1
12
|
## 0.9.1 (2011-04-04)
|
2
13
|
|
3
14
|
* Fix: [issue 25](https://github.com/rubiii/httpi/issues/22) problem with HTTPI using the Net::HTTP adapter [hakanensari].
|
data/httpi.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_dependency "rack"
|
18
18
|
s.add_dependency "ntlm-http", ">= 0.1.1"
|
19
19
|
|
20
|
-
s.add_development_dependency "httpclient", "~> 2.1.
|
20
|
+
s.add_development_dependency "httpclient", "~> 2.1.7"
|
21
21
|
s.add_development_dependency "curb", "~> 0.7.8"
|
22
22
|
|
23
23
|
s.add_development_dependency "rspec", "~> 2.2"
|
data/lib/httpi/adapter.rb
CHANGED
@@ -48,10 +48,6 @@ module HTTPI
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def default_adapter
|
51
|
-
return :httpclient if defined?(::HTTPClient)
|
52
|
-
return :curb if defined?(::Curl::Easy)
|
53
|
-
return :net_http if defined?(::Net::HTTP)
|
54
|
-
|
55
51
|
DEPENDENCIES.each do |(adapter, dependencies)|
|
56
52
|
begin
|
57
53
|
dependencies.each { |dependency| require dependency }
|
@@ -9,7 +9,7 @@ module HTTPI
|
|
9
9
|
# Adapter for the Net::HTTP client.
|
10
10
|
# http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/
|
11
11
|
class NetHTTP
|
12
|
-
|
12
|
+
|
13
13
|
def initialize(request)
|
14
14
|
self.client = new_client request
|
15
15
|
end
|
@@ -70,7 +70,7 @@ module HTTPI
|
|
70
70
|
def do_request(type, request)
|
71
71
|
setup_client request
|
72
72
|
setup_ssl_auth request.auth.ssl if request.auth.ssl?
|
73
|
-
|
73
|
+
|
74
74
|
respond_with(client.start do |http|
|
75
75
|
yield http, request_client(type, request)
|
76
76
|
end)
|
@@ -88,7 +88,6 @@ module HTTPI
|
|
88
88
|
client.ca_file = ssl.ca_cert_file if ssl.ca_cert_file
|
89
89
|
client.verify_mode = ssl.openssl_verify_mode
|
90
90
|
end
|
91
|
-
|
92
91
|
|
93
92
|
def request_client(type, request)
|
94
93
|
request_class = case type
|
@@ -98,20 +97,21 @@ module HTTPI
|
|
98
97
|
when :put then Net::HTTP::Put
|
99
98
|
when :delete then Net::HTTP::Delete
|
100
99
|
end
|
101
|
-
|
100
|
+
|
102
101
|
request_client = request_class.new request.url.request_uri, request.headers
|
103
|
-
|
102
|
+
|
104
103
|
request_client.basic_auth *request.auth.credentials if request.auth.basic?
|
105
104
|
request_client.ntlm_auth *request.auth.credentials if request.auth.ntlm?
|
106
|
-
|
105
|
+
|
107
106
|
request_client
|
108
107
|
end
|
109
108
|
|
110
109
|
def respond_with(response)
|
111
110
|
headers = response.to_hash
|
112
|
-
headers.each {|
|
111
|
+
headers.each { |key, value| headers[key] = value[0] }
|
113
112
|
Response.new response.code, headers, response.body
|
114
113
|
end
|
114
|
+
|
115
115
|
end
|
116
116
|
end
|
117
117
|
end
|
data/lib/httpi/version.rb
CHANGED
@@ -12,7 +12,7 @@ describe HTTPI::Adapter::Curb do
|
|
12
12
|
before do
|
13
13
|
curb.expects(:http_get)
|
14
14
|
curb.expects(:response_code).returns(200)
|
15
|
-
curb.expects(:header_str).returns("")
|
15
|
+
curb.expects(:header_str).returns("Accept-encoding: utf-8")
|
16
16
|
curb.expects(:body_str).returns(Fixture.xml)
|
17
17
|
end
|
18
18
|
|
@@ -25,7 +25,7 @@ describe HTTPI::Adapter::Curb do
|
|
25
25
|
before do
|
26
26
|
curb.expects(:http_post)
|
27
27
|
curb.expects(:response_code).returns(200)
|
28
|
-
curb.expects(:header_str).returns("")
|
28
|
+
curb.expects(:header_str).returns("Accept-encoding: utf-8")
|
29
29
|
curb.expects(:body_str).returns(Fixture.xml)
|
30
30
|
end
|
31
31
|
|
@@ -45,7 +45,7 @@ describe HTTPI::Adapter::Curb do
|
|
45
45
|
before do
|
46
46
|
curb.expects(:http_head)
|
47
47
|
curb.expects(:response_code).returns(200)
|
48
|
-
curb.expects(:header_str).returns("")
|
48
|
+
curb.expects(:header_str).returns("Accept-encoding: utf-8")
|
49
49
|
curb.expects(:body_str).returns(Fixture.xml)
|
50
50
|
end
|
51
51
|
|
@@ -58,7 +58,7 @@ describe HTTPI::Adapter::Curb do
|
|
58
58
|
before do
|
59
59
|
curb.expects(:http_put)
|
60
60
|
curb.expects(:response_code).returns(200)
|
61
|
-
curb.expects(:header_str).returns("")
|
61
|
+
curb.expects(:header_str).returns("Accept-encoding: utf-8")
|
62
62
|
curb.expects(:body_str).returns(Fixture.xml)
|
63
63
|
end
|
64
64
|
|
@@ -78,7 +78,7 @@ describe HTTPI::Adapter::Curb do
|
|
78
78
|
before do
|
79
79
|
curb.expects(:http_delete)
|
80
80
|
curb.expects(:response_code).returns(200)
|
81
|
-
curb.expects(:header_str).returns("")
|
81
|
+
curb.expects(:header_str).returns("Accept-encoding: utf-8")
|
82
82
|
curb.expects(:body_str).returns("")
|
83
83
|
end
|
84
84
|
|
@@ -105,7 +105,7 @@ describe HTTPI::Adapter::Curb do
|
|
105
105
|
|
106
106
|
it "should be set if specified" do
|
107
107
|
request = basic_request { |request| request.proxy = "http://proxy.example.com" }
|
108
|
-
|
108
|
+
|
109
109
|
curb.expects(:proxy_url=).with(request.proxy.to_s)
|
110
110
|
adapter.get(request)
|
111
111
|
end
|
@@ -156,14 +156,14 @@ describe HTTPI::Adapter::Curb do
|
|
156
156
|
describe "http_auth_types" do
|
157
157
|
it "should be set to :basic for HTTP basic auth" do
|
158
158
|
request = basic_request { |request| request.auth.basic "username", "password" }
|
159
|
-
|
159
|
+
|
160
160
|
curb.expects(:http_auth_types=).with(:basic)
|
161
161
|
adapter.get(request)
|
162
162
|
end
|
163
163
|
|
164
164
|
it "should be set to :digest for HTTP digest auth" do
|
165
165
|
request = basic_request { |request| request.auth.digest "username", "password" }
|
166
|
-
|
166
|
+
|
167
167
|
curb.expects(:http_auth_types=).with(:digest)
|
168
168
|
adapter.get(request)
|
169
169
|
end
|
@@ -172,7 +172,7 @@ describe HTTPI::Adapter::Curb do
|
|
172
172
|
describe "username and password" do
|
173
173
|
it "should be set for HTTP basic auth" do
|
174
174
|
request = basic_request { |request| request.auth.basic "username", "password" }
|
175
|
-
|
175
|
+
|
176
176
|
curb.expects(:username=).with("username")
|
177
177
|
curb.expects(:password=).with("password")
|
178
178
|
adapter.get(request)
|
@@ -180,7 +180,7 @@ describe HTTPI::Adapter::Curb do
|
|
180
180
|
|
181
181
|
it "should be set for HTTP digest auth" do
|
182
182
|
request = basic_request { |request| request.auth.digest "username", "password" }
|
183
|
-
|
183
|
+
|
184
184
|
curb.expects(:username=).with("username")
|
185
185
|
curb.expects(:password=).with("password")
|
186
186
|
adapter.get(request)
|
@@ -200,21 +200,21 @@ describe HTTPI::Adapter::Curb do
|
|
200
200
|
curb.expects(:cert=).with(ssl_auth_request.auth.ssl.cert_file)
|
201
201
|
curb.expects(:ssl_verify_peer=).with(true)
|
202
202
|
curb.expects(:certtype=).with(ssl_auth_request.auth.ssl.cert_type.to_s.upcase)
|
203
|
-
|
203
|
+
|
204
204
|
adapter.get(ssl_auth_request)
|
205
205
|
end
|
206
|
-
|
206
|
+
|
207
207
|
it "should set the cert_type to DER if specified" do
|
208
208
|
ssl_auth_request.auth.ssl.cert_type = :der
|
209
209
|
curb.expects(:certtype=).with(:der.to_s.upcase)
|
210
|
-
|
210
|
+
|
211
211
|
adapter.get(ssl_auth_request)
|
212
212
|
end
|
213
213
|
|
214
214
|
it "should set the cacert if specified" do
|
215
215
|
ssl_auth_request.auth.ssl.ca_cert_file = "spec/fixtures/client_cert.pem"
|
216
216
|
curb.expects(:cacert=).with(ssl_auth_request.auth.ssl.ca_cert_file)
|
217
|
-
|
217
|
+
|
218
218
|
adapter.get(ssl_auth_request)
|
219
219
|
end
|
220
220
|
end
|
@@ -150,7 +150,9 @@ describe HTTPI::Adapter::HTTPClient do
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def http_message(body = Fixture.xml)
|
153
|
-
HTTP::Message.new_response body
|
153
|
+
message = HTTP::Message.new_response body
|
154
|
+
message.header.set "Accept-encoding", "utf-8"
|
155
|
+
message
|
154
156
|
end
|
155
157
|
|
156
158
|
def basic_request
|
@@ -4,6 +4,7 @@ require "httpi/request"
|
|
4
4
|
|
5
5
|
describe HTTPI::Adapter::NetHTTP do
|
6
6
|
let(:net_http) { Net::HTTP.any_instance }
|
7
|
+
let(:basic_response) { { :body => Fixture.xml, :headers => { "Accept-encoding" => "utf-8" } } }
|
7
8
|
|
8
9
|
def adapter(request)
|
9
10
|
@adapter ||= HTTPI::Adapter::NetHTTP.new request
|
@@ -11,7 +12,7 @@ describe HTTPI::Adapter::NetHTTP do
|
|
11
12
|
|
12
13
|
describe "#get" do
|
13
14
|
it "should return a valid HTTPI::Response" do
|
14
|
-
stub_request(:get, basic_request.url.to_s).to_return(
|
15
|
+
stub_request(:get, basic_request.url.to_s).to_return(basic_response)
|
15
16
|
adapter(basic_request).get(basic_request).should match_response(:body => Fixture.xml)
|
16
17
|
end
|
17
18
|
end
|
@@ -19,32 +20,36 @@ describe HTTPI::Adapter::NetHTTP do
|
|
19
20
|
describe "#post" do
|
20
21
|
it "should return a valid HTTPI::Response" do
|
21
22
|
request = HTTPI::Request.new :url => "http://example.com", :body => Fixture.xml
|
22
|
-
stub_request(:post, request.url.to_s).with(:body => request.body).to_return(
|
23
|
-
|
23
|
+
stub_request(:post, request.url.to_s).with(:body => request.body).to_return(basic_response)
|
24
|
+
|
24
25
|
adapter(request).post(request).should match_response(:body => Fixture.xml)
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
28
29
|
describe "#head" do
|
29
30
|
it "should return a valid HTTPI::Response" do
|
30
|
-
stub_request(:head, basic_request.url.to_s).to_return(
|
31
|
+
stub_request(:head, basic_request.url.to_s).to_return(basic_response)
|
31
32
|
adapter(basic_request).head(basic_request).should match_response(:body => Fixture.xml)
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
36
|
describe "#put" do
|
36
37
|
it "should return a valid HTTPI::Response" do
|
37
|
-
request = HTTPI::Request.new
|
38
|
-
|
39
|
-
|
38
|
+
request = HTTPI::Request.new(
|
39
|
+
:url => "http://example.com",
|
40
|
+
:headers => { "Accept-encoding" => "utf-8" },
|
41
|
+
:body => Fixture.xml
|
42
|
+
)
|
43
|
+
stub_request(:put, request.url.to_s).with(:body => request.body).to_return(basic_response)
|
44
|
+
|
40
45
|
adapter(request).put(request).should match_response(:body => Fixture.xml)
|
41
46
|
end
|
42
47
|
end
|
43
48
|
|
44
49
|
describe "#delete" do
|
45
50
|
it "should return a valid HTTPI::Response" do
|
46
|
-
stub_request(:delete, basic_request.url.to_s)
|
47
|
-
adapter(basic_request).delete(basic_request).should match_response(:body =>
|
51
|
+
stub_request(:delete, basic_request.url.to_s).to_return(basic_response)
|
52
|
+
adapter(basic_request).delete(basic_request).should match_response(:body => Fixture.xml)
|
48
53
|
end
|
49
54
|
end
|
50
55
|
|
@@ -59,7 +64,7 @@ describe HTTPI::Adapter::NetHTTP do
|
|
59
64
|
|
60
65
|
it "should be set to true for SSL requests" do
|
61
66
|
request = basic_request { |request| request.ssl = true }
|
62
|
-
|
67
|
+
|
63
68
|
net_http.expects(:use_ssl=).with(true)
|
64
69
|
adapter(request).get(request)
|
65
70
|
end
|
@@ -73,7 +78,7 @@ describe HTTPI::Adapter::NetHTTP do
|
|
73
78
|
|
74
79
|
it "should be set if specified" do
|
75
80
|
request = basic_request { |request| request.open_timeout = 30 }
|
76
|
-
|
81
|
+
|
77
82
|
net_http.expects(:open_timeout=).with(30)
|
78
83
|
adapter(request).get(request)
|
79
84
|
end
|
@@ -87,7 +92,7 @@ describe HTTPI::Adapter::NetHTTP do
|
|
87
92
|
|
88
93
|
it "should be set if specified" do
|
89
94
|
request = basic_request { |request| request.read_timeout = 30 }
|
90
|
-
|
95
|
+
|
91
96
|
net_http.expects(:read_timeout=).with(30)
|
92
97
|
adapter(request).get(request)
|
93
98
|
end
|
@@ -96,7 +101,7 @@ describe HTTPI::Adapter::NetHTTP do
|
|
96
101
|
describe "basic_auth" do
|
97
102
|
it "should be set for HTTP basic auth" do
|
98
103
|
request = basic_request { |request| request.auth.basic "username", "password" }
|
99
|
-
|
104
|
+
|
100
105
|
stub_request(:get, "http://username:password@example.com")
|
101
106
|
Net::HTTP::Get.any_instance.expects(:basic_auth).with(*request.auth.credentials)
|
102
107
|
adapter(request).get(request)
|
@@ -115,14 +120,14 @@ describe HTTPI::Adapter::NetHTTP do
|
|
115
120
|
net_http.expects(:cert=).with(ssl_auth_request.auth.ssl.cert)
|
116
121
|
net_http.expects(:key=).with(ssl_auth_request.auth.ssl.cert_key)
|
117
122
|
net_http.expects(:verify_mode=).with(ssl_auth_request.auth.ssl.openssl_verify_mode)
|
118
|
-
|
123
|
+
|
119
124
|
adapter(ssl_auth_request).get(ssl_auth_request)
|
120
125
|
end
|
121
126
|
|
122
127
|
it "should set the client_ca if specified" do
|
123
128
|
ssl_auth_request.auth.ssl.ca_cert_file = "spec/fixtures/client_cert.pem"
|
124
129
|
net_http.expects(:ca_file=).with(ssl_auth_request.auth.ssl.ca_cert_file)
|
125
|
-
|
130
|
+
|
126
131
|
adapter(ssl_auth_request).get(ssl_auth_request)
|
127
132
|
end
|
128
133
|
end
|
data/spec/support/matchers.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
RSpec::Matchers.define :match_response do |options|
|
2
|
-
defaults = { :code => 200, :headers => {}, :body => "" }
|
2
|
+
defaults = { :code => 200, :headers => { "Accept-encoding" => "utf-8" }, :body => "" }
|
3
3
|
response = defaults.merge options
|
4
|
-
|
4
|
+
|
5
5
|
match do |actual|
|
6
6
|
actual.should be_an(HTTPI::Response)
|
7
7
|
actual.code.should == response[:code]
|
8
|
-
actual.headers.should == response[:headers]
|
8
|
+
downcase(actual.headers).should == downcase(response[:headers])
|
9
9
|
actual.body.should == response[:body]
|
10
10
|
end
|
11
|
+
|
12
|
+
def downcase(hash)
|
13
|
+
hash.inject({}) do |memo, (key, value)|
|
14
|
+
memo[key.downcase] = value.downcase
|
15
|
+
memo
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
11
19
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httpi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 3
|
10
|
+
version: 0.9.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Daniel Harrington
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-04-
|
19
|
+
date: 2011-04-28 00:00:00 +02:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -57,12 +57,12 @@ dependencies:
|
|
57
57
|
requirements:
|
58
58
|
- - ~>
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
hash:
|
60
|
+
hash: 5
|
61
61
|
segments:
|
62
62
|
- 2
|
63
63
|
- 1
|
64
|
-
-
|
65
|
-
version: 2.1.
|
64
|
+
- 7
|
65
|
+
version: 2.1.7
|
66
66
|
type: :development
|
67
67
|
version_requirements: *id003
|
68
68
|
- !ruby/object:Gem::Dependency
|
@@ -224,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
224
224
|
requirements: []
|
225
225
|
|
226
226
|
rubyforge_project: httpi
|
227
|
-
rubygems_version: 1.4.
|
227
|
+
rubygems_version: 1.4.1
|
228
228
|
signing_key:
|
229
229
|
specification_version: 3
|
230
230
|
summary: Interface for Ruby HTTP libraries
|