httpi 2.0.0.rc1 → 2.0.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.
metadata CHANGED
@@ -1,109 +1,103 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: httpi
3
- version: !ruby/object:Gem::Version
4
- hash: -342245774
5
- prerelease: 6
6
- segments:
7
- - 2
8
- - 0
9
- - 0
10
- - rc
11
- - 1
12
- version: 2.0.0.rc1
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ prerelease:
13
6
  platform: ruby
14
- authors:
7
+ authors:
15
8
  - Daniel Harrington
16
9
  - Martin Tepper
17
10
  autorequire:
18
11
  bindir: bin
19
12
  cert_chain: []
20
-
21
- date: 2012-11-10 00:00:00 +01:00
22
- default_executable:
23
- dependencies:
24
- - !ruby/object:Gem::Dependency
25
- requirement: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
34
- version_requirements: *id001
13
+ date: 2012-12-16 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
35
16
  name: rack
36
- prerelease: false
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
37
23
  type: :runtime
38
- - !ruby/object:Gem::Dependency
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
40
26
  none: false
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 25
45
- segments:
46
- - 0
47
- - 9
48
- version: "0.9"
49
- version_requirements: *id002
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
50
32
  name: rake
51
- prerelease: false
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: '10.0'
52
39
  type: :development
53
- - !ruby/object:Gem::Dependency
54
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
55
42
  none: false
56
- requirements:
43
+ requirements:
57
44
  - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 21
60
- segments:
61
- - 2
62
- - 11
63
- version: "2.11"
64
- version_requirements: *id003
45
+ - !ruby/object:Gem::Version
46
+ version: '10.0'
47
+ - !ruby/object:Gem::Dependency
65
48
  name: rspec
66
- prerelease: false
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.12'
67
55
  type: :development
68
- - !ruby/object:Gem::Dependency
69
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
70
58
  none: false
71
- requirements:
59
+ requirements:
72
60
  - - ~>
73
- - !ruby/object:Gem::Version
74
- hash: 19
75
- segments:
76
- - 0
77
- - 12
78
- version: "0.12"
79
- version_requirements: *id004
61
+ - !ruby/object:Gem::Version
62
+ version: '2.12'
63
+ - !ruby/object:Gem::Dependency
80
64
  name: mocha
81
- prerelease: false
82
- type: :development
83
- - !ruby/object:Gem::Dependency
84
- requirement: &id005 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
85
66
  none: false
86
- requirements:
67
+ requirements:
87
68
  - - ~>
88
- - !ruby/object:Gem::Version
89
- hash: 31
90
- segments:
91
- - 1
92
- - 8
93
- version: "1.8"
94
- version_requirements: *id005
95
- name: webmock
69
+ - !ruby/object:Gem::Version
70
+ version: '0.13'
71
+ type: :development
96
72
  prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: '0.13'
79
+ - !ruby/object:Gem::Dependency
80
+ name: puma
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: 2.0.0.b3
97
87
  type: :development
98
- description: HTTPI provides a common interface for Ruby's HTTP libraries
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 2.0.0.b3
95
+ description: Common interface for Ruby's HTTP libraries
99
96
  email: me@rubiii.com
100
97
  executables: []
101
-
102
98
  extensions: []
103
-
104
99
  extra_rdoc_files: []
105
-
106
- files:
100
+ files:
107
101
  - .gitignore
108
102
  - .rspec
109
103
  - .rvmrc
@@ -146,58 +140,51 @@ files:
146
140
  - spec/httpi/auth/ssl_spec.rb
147
141
  - spec/httpi/cookie_spec.rb
148
142
  - spec/httpi/cookie_store_spec.rb
143
+ - spec/httpi/error_spec.rb
149
144
  - spec/httpi/httpi_spec.rb
150
145
  - spec/httpi/request_spec.rb
151
146
  - spec/httpi/response_spec.rb
152
- - spec/integration/fixtures/ca.pem
147
+ - spec/integration/curb_spec.rb
148
+ - spec/integration/em_http_spec.rb
153
149
  - spec/integration/fixtures/ca_all.pem
154
- - spec/integration/fixtures/htdigest
155
- - spec/integration/fixtures/htpasswd
156
150
  - spec/integration/fixtures/server.cert
157
151
  - spec/integration/fixtures/server.key
158
- - spec/integration/fixtures/subca.pem
159
- - spec/integration/request_spec.rb
160
- - spec/integration/server.rb
161
- - spec/integration/ssl_server.rb
162
- - spec/integration/ssl_spec.rb
152
+ - spec/integration/httpclient_spec.rb
153
+ - spec/integration/net_http_spec.rb
154
+ - spec/integration/support/application.rb
155
+ - spec/integration/support/server.rb
163
156
  - spec/spec_helper.rb
157
+ - spec/support/error_helper.rb
164
158
  - spec/support/fixture.rb
165
159
  - spec/support/matchers.rb
166
- has_rdoc: true
167
160
  homepage: http://github.com/savonrb/httpi
168
161
  licenses: []
169
-
170
162
  post_install_message:
171
163
  rdoc_options: []
172
-
173
- require_paths:
164
+ require_paths:
174
165
  - lib
175
- required_ruby_version: !ruby/object:Gem::Requirement
166
+ required_ruby_version: !ruby/object:Gem::Requirement
176
167
  none: false
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- hash: 3
181
- segments:
168
+ requirements:
169
+ - - ! '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ segments:
182
173
  - 0
183
- version: "0"
184
- required_rubygems_version: !ruby/object:Gem::Requirement
174
+ hash: -511386314545034600
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
176
  none: false
186
- requirements:
187
- - - ">"
188
- - !ruby/object:Gem::Version
189
- hash: 25
190
- segments:
191
- - 1
192
- - 3
193
- - 1
194
- version: 1.3.1
177
+ requirements:
178
+ - - ! '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ segments:
182
+ - 0
183
+ hash: -511386314545034600
195
184
  requirements: []
196
-
197
185
  rubyforge_project: httpi
198
- rubygems_version: 1.6.2
186
+ rubygems_version: 1.8.24
199
187
  signing_key:
200
188
  specification_version: 3
201
189
  summary: Common interface for Ruby's HTTP libraries
202
190
  test_files: []
203
-
@@ -1,23 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIID0DCCArigAwIBAgIBADANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGDAJKUDES
3
- MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxCzAJBgNVBAMMAkNBMB4X
4
- DTA0MDEzMDAwNDIzMloXDTM2MDEyMjAwNDIzMlowPDELMAkGA1UEBgwCSlAxEjAQ
5
- BgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMQswCQYDVQQDDAJDQTCCASIw
6
- DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANbv0x42BTKFEQOE+KJ2XmiSdZpR
7
- wjzQLAkPLRnLB98tlzs4xo+y4RyY/rd5TT9UzBJTIhP8CJi5GbS1oXEerQXB3P0d
8
- L5oSSMwGGyuIzgZe5+vZ1kgzQxMEKMMKlzA73rbMd4Jx3u5+jdbP0EDrPYfXSvLY
9
- bS04n2aX7zrN3x5KdDrNBfwBio2/qeaaj4+9OxnwRvYP3WOvqdW0h329eMfHw0pi
10
- JI0drIVdsEqClUV4pebT/F+CPUPkEh/weySgo9wANockkYu5ujw2GbLFcO5LXxxm
11
- dEfcVr3r6t6zOA4bJwL0W/e6LBcrwiG/qPDFErhwtgTLYf6Er67SzLyA66UCAwEA
12
- AaOB3DCB2TAPBgNVHRMBAf8EBTADAQH/MDEGCWCGSAGG+EIBDQQkFiJSdWJ5L09w
13
- ZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRJ7Xd380KzBV7f
14
- USKIQ+O/vKbhDzAOBgNVHQ8BAf8EBAMCAQYwZAYDVR0jBF0wW4AUSe13d/NCswVe
15
- 31EiiEPjv7ym4Q+hQKQ+MDwxCzAJBgNVBAYMAkpQMRIwEAYDVQQKDAlKSU4uR1Iu
16
- SlAxDDAKBgNVBAsMA1JSUjELMAkGA1UEAwwCQ0GCAQAwDQYJKoZIhvcNAQEFBQAD
17
- ggEBAIu/mfiez5XN5tn2jScgShPgHEFJBR0BTJBZF6xCk0jyqNx/g9HMj2ELCuK+
18
- r/Y7KFW5c5M3AQ+xWW0ZSc4kvzyTcV7yTVIwj2jZ9ddYMN3nupZFgBK1GB4Y05GY
19
- MJJFRkSu6d/Ph5ypzBVw2YMT/nsOo5VwMUGLgS7YVjU+u/HNWz80J3oO17mNZllj
20
- PvORJcnjwlroDnS58KoJ7GDgejv3ESWADvX1OHLE4cRkiQGeLoEU4pxdCxXRqX0U
21
- PbwIkZN9mXVcrmPHq8MWi4eC/V7hnbZETMHuWhUoiNdOEfsAXr3iP4KjyyRdwc7a
22
- d/xgcK06UVQRL/HbEYGiQL056mc=
23
- -----END CERTIFICATE-----
@@ -1 +0,0 @@
1
- admin:auth:4302fe65caa32f27721949149ccd3083
@@ -1,2 +0,0 @@
1
- admin:Qg266hq/YYKe2
2
- guest:gbPc4vPCH.h12
@@ -1,21 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDaDCCAlCgAwIBAgIBATANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGDAJKUDES
3
- MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxCzAJBgNVBAMMAkNBMB4X
4
- DTA0MDEzMDAwNDMyN1oXDTM1MDEyMjAwNDMyN1owPzELMAkGA1UEBgwCSlAxEjAQ
5
- BgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMQ4wDAYDVQQDDAVTdWJDQTCC
6
- ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ0Ou7AyRcRXnB/kVHv/6kwe
7
- ANzgg/DyJfsAUqW90m7Lu1nqyug8gK0RBd77yU0w5HOAMHTVSdpjZK0g2sgx4Mb1
8
- d/213eL9TTl5MRVEChTvQr8q5DVG/8fxPPE7fMI8eOAzd98/NOAChk+80r4Sx7fC
9
- kGVEE1bKwY1MrUsUNjOY2d6t3M4HHV3HX1V8ShuKfsHxgCmLzdI8U+5CnQedFgkm
10
- 3e+8tr8IX5RR1wA1Ifw9VadF7OdI/bGMzog/Q8XCLf+WPFjnK7Gcx6JFtzF6Gi4x
11
- 4dp1Xl45JYiVvi9zQ132wu8A1pDHhiNgQviyzbP+UjcB/tsOpzBQF8abYzgEkWEC
12
- AwEAAaNyMHAwDwYDVR0TAQH/BAUwAwEB/zAxBglghkgBhvhCAQ0EJBYiUnVieS9P
13
- cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUlCjXWLsReYzH
14
- LzsxwVnCXmKoB/owCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCJ/OyN
15
- rT8Cq2Y+G2yA/L1EMRvvxwFBqxavqaqHl/6rwsIBFlB3zbqGA/0oec6MAVnYynq4
16
- c4AcHTjx3bQ/S4r2sNTZq0DH4SYbQzIobx/YW8PjQUJt8KQdKMcwwi7arHP7A/Ha
17
- LKu8eIC2nsUBnP4NhkYSGhbmpJK+PFD0FVtD0ZIRlY/wsnaZNjWWcnWF1/FNuQ4H
18
- ySjIblqVQkPuzebv3Ror6ZnVDukn96Mg7kP4u6zgxOeqlJGRe1M949SS9Vudjl8X
19
- SF4aZUUB9pQGhsqQJVqaz2OlhGOp9D0q54xko/rekjAIcuDjl1mdX4F2WRrzpUmZ
20
- uY/bPeOBYiVsOYVe
21
- -----END CERTIFICATE-----
@@ -1,112 +0,0 @@
1
- require "spec_helper"
2
- require "httpi"
3
- require "integration/server"
4
-
5
- MockServer.new(IntegrationServer, 4000).start
6
-
7
- describe HTTPI do
8
- let(:client) { HTTPI }
9
-
10
- before :all do
11
- WebMock.allow_net_connect!
12
-
13
- @username = "admin"
14
- @password = "pwd"
15
- @error_message = "Authorization Required"
16
- @example_web_page = "Hello"
17
- @content_type = "text/plain"
18
- end
19
-
20
- shared_examples_for "an HTTP client" do
21
- it "and send HTTP headers" do
22
- request = HTTPI::Request.new :url => "http://localhost:4000/x-header"
23
- request.headers["X-Header"] = "HTTPI"
24
-
25
- response = HTTPI.get request, adapter
26
- response.body.should include("X-Header is HTTPI")
27
- end
28
-
29
- it "and execute an HTTP GET request" do
30
- response = HTTPI.get "http://localhost:4000", adapter
31
- response.body.should include(@example_web_page)
32
- response.headers["Content-Type"].should include(@content_type)
33
- end
34
-
35
- it "and execute an HTTP POST request" do
36
- response = HTTPI.post "http://localhost:4000", "<some>xml</some>", adapter
37
- response.body.should include(@example_web_page)
38
- response.headers["Content-Type"].should include(@content_type)
39
- end
40
-
41
- it "and execute an HTTP HEAD request" do
42
- response = HTTPI.head "http://localhost:4000", adapter
43
- response.code.should == 200
44
- response.headers["Content-Type"].should include(@content_type)
45
- end
46
-
47
- it "and execute an HTTP PUT request" do
48
- response = HTTPI.put "http://localhost:4000", "<some>xml</some>", adapter
49
- response.body.should include("PUT is not allowed")
50
- response.headers["Content-Type"].should include(@content_type)
51
- end
52
-
53
- it "and execute an HTTP DELETE request" do
54
- response = HTTPI.delete "http://localhost:4000", adapter
55
- response.body.should include("DELETE is not allowed")
56
- response.headers["Content-Type"].should include(@content_type)
57
- end
58
- end
59
-
60
- shared_examples_for "it works with HTTP basic auth" do
61
- it "and access a secured page" do
62
- request = HTTPI::Request.new :url => "http://localhost:4000/auth/basic"
63
- request.auth.basic @username, @password
64
-
65
- response = HTTPI.get request, adapter
66
- response.body.should_not include(@error_message)
67
- end
68
- end
69
-
70
- shared_examples_for "it works with HTTP digest auth" do
71
- it "and access a secured page" do
72
- request = HTTPI::Request.new :url => "http://localhost:4000/auth/digest"
73
- request.auth.digest @username, @password
74
-
75
- response = HTTPI.get request, adapter
76
- response.body.should_not include(@error_message)
77
- end
78
- end
79
-
80
- HTTPI::Adapter::ADAPTERS.keys.each do |adapter|
81
- if adapter == :em_http && RUBY_VERSION >= "1.9.0"
82
-
83
- around(:each) do |example|
84
- # Only wrap the example for the :em_http adapter
85
- if EM.respond_to?(:synchrony)
86
- EM.synchrony do
87
- example.run
88
- EM.stop
89
- end
90
- end
91
- end
92
- end
93
-
94
- unless (adapter == :curb && RUBY_PLATFORM =~ /java/) || (adapter == :em_http && RUBY_VERSION =~ /1\.8/)
95
- context "using :#{adapter}" do
96
- let(:adapter) { adapter }
97
- it_should_behave_like "an HTTP client"
98
- it_should_behave_like "it works with HTTP basic auth"
99
- end
100
- end
101
- end
102
-
103
- (HTTPI::Adapter::ADAPTERS.keys - [:net_http]).each do |adapter|
104
- unless (adapter == :curb && RUBY_PLATFORM =~ /java/) || adapter == :em_http
105
- context "using :#{adapter}" do
106
- let(:adapter) { adapter }
107
- it_should_behave_like "it works with HTTP digest auth"
108
- end
109
- end
110
- end
111
-
112
- end
@@ -1,39 +0,0 @@
1
- require "spec_helper"
2
- require "mock_server"
3
-
4
- IntegrationServer = Rack::Builder.new do
5
- map "/" do
6
- run lambda {|env|
7
- case env["REQUEST_METHOD"]
8
- when "HEAD" then
9
- [200, {"Content-Type" => "text/plain", "Content-Length" => "5"}, []]
10
- when "GET", "POST" then
11
- [200, {"Content-Type" => "text/plain", "Content-Length" => "5"}, ["Hello"]]
12
- when "PUT", "DELETE"
13
- body = "#{env["REQUEST_METHOD"]} is not allowed"
14
- [200, {"Content-Type" => "text/plain", "Content-Length" => body.size.to_s}, [body]]
15
- end
16
- }
17
- end
18
-
19
- map "/x-header" do
20
- run lambda {|env|
21
- body = "X-Header is #{env["HTTP_X_HEADER"]}"
22
- [200, {"Content-Type" => "text/plain", "Content-Length" => body.size.to_s}, [body]]
23
- }
24
- end
25
-
26
- map "/auth" do
27
- map "/basic" do
28
- run Rack::Auth::Basic do |user, password|
29
- user == "admin" && password == "secret"
30
- end
31
- end
32
-
33
- map "/digest" do
34
- run Rack::Auth::Digest::MD5 do |username|
35
- {"admin" => "pwd"}[username]
36
- end
37
- end
38
- end
39
- end