httpi 1.1.1 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ admin:auth:4302fe65caa32f27721949149ccd3083
@@ -0,0 +1,2 @@
1
+ admin:Qg266hq/YYKe2
2
+ guest:gbPc4vPCH.h12
@@ -0,0 +1,19 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIC/zCCAeegAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGDAJKUDES
3
+ MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxDjAMBgNVBAMMBVN1YkNB
4
+ MB4XDTA0MDEzMTAzMTMxNloXDTMzMDEyMzAzMTMxNlowQzELMAkGA1UEBgwCSlAx
5
+ EjAQBgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMRIwEAYDVQQDDAlsb2Nh
6
+ bGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANFJTxWqup3nV9dsJAku
7
+ p+WaXnPNIzcpAA3qMGZDJTJsfa8Du7ZxTP0XJK5mETttBrn711cJxAuP3KjqnW9S
8
+ vtZ9lY2sXJ6Zj62sN5LwG3VVe25dI28yR1EsbHjJ5Zjf9tmggMC6am52dxuHbt5/
9
+ vHo4ngJuKE/U+eeGRivMn6gFAgMBAAGjgYUwgYIwDAYDVR0TAQH/BAIwADAxBglg
10
+ hkgBhvhCAQ0EJBYiUnVieS9PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
11
+ BgNVHQ4EFgQUpZIyygD9JxFYHHOTEuWOLbCKfckwCwYDVR0PBAQDAgWgMBMGA1Ud
12
+ JQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBBQUAA4IBAQBwAIj5SaBHaA5X31IP
13
+ CFCJiep96awfp7RANO0cuUj+ZpGoFn9d6FXY0g+Eg5wAkCNIzZU5NHN9xsdOpnUo
14
+ zIBbyTfQEPrge1CMWMvL6uGaoEXytq84VTitF/xBTky4KtTn6+es4/e7jrrzeUXQ
15
+ RC46gkHObmDT91RkOEGjHLyld2328jo3DIN/VTHIryDeVHDWjY5dENwpwdkhhm60
16
+ DR9IrNBbXWEe9emtguNXeN0iu1ux0lG1Hc6pWGQxMlRKNvGh0yZB9u5EVe38tOV0
17
+ jQaoNyL7qzcQoXD3Dmbi1p0iRmg/+HngISsz8K7k7MBNVsSclztwgCzTZOBiVtkM
18
+ rRlQ
19
+ -----END CERTIFICATE-----
@@ -0,0 +1,15 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIICXQIBAAKBgQDRSU8Vqrqd51fXbCQJLqflml5zzSM3KQAN6jBmQyUybH2vA7u2
3
+ cUz9FySuZhE7bQa5+9dXCcQLj9yo6p1vUr7WfZWNrFyemY+trDeS8Bt1VXtuXSNv
4
+ MkdRLGx4yeWY3/bZoIDAumpudncbh27ef7x6OJ4CbihP1PnnhkYrzJ+oBQIDAQAB
5
+ AoGBAIf4CstW2ltQO7+XYGoex7Hh8s9lTSW/G2vu5Hbr1LTHy3fzAvdq8MvVR12O
6
+ rk9fa+lU9vhzPc0NMB0GIDZ9GcHuhW5hD1Wg9OSCbTOkZDoH3CAFqonjh4Qfwv5W
7
+ IPAFn9KHukdqGXkwEMdErsUaPTy9A1V/aROVEaAY+HJgq/eZAkEA/BP1QMV04WEZ
8
+ Oynzz7/lLizJGGxp2AOvEVtqMoycA/Qk+zdKP8ufE0wbmCE3Qd6GoynavsHb6aGK
9
+ gQobb8zDZwJBANSK6MrXlrZTtEaeZuyOB4mAmRzGzOUVkUyULUjEx2GDT93ujAma
10
+ qm/2d3E+wXAkNSeRpjUmlQXy/2oSqnGvYbMCQQDRM+cYyEcGPUVpWpnj0shrF/QU
11
+ 9vSot/X1G775EMTyaw6+BtbyNxVgOIu2J+rqGbn3c+b85XqTXOPL0A2RLYkFAkAm
12
+ syhSDtE9X55aoWsCNZY/vi+i4rvaFoQ/WleogVQAeGVpdo7/DK9t9YWoFBIqth0L
13
+ mGSYFu9ZhvZkvQNV8eYrAkBJ+rOIaLDsmbrgkeDruH+B/9yrm4McDtQ/rgnOGYnH
14
+ LjLpLLOrgUxqpzLWe++EwSLwK2//dHO+SPsQJ4xsyQJy
15
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,21 @@
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-----
@@ -78,7 +78,20 @@ describe HTTPI do
78
78
  end
79
79
 
80
80
  HTTPI::Adapter::ADAPTERS.keys.each do |adapter|
81
- unless adapter == :curb && RUBY_PLATFORM =~ /java/
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/)
82
95
  context "using :#{adapter}" do
83
96
  let(:adapter) { adapter }
84
97
  it_should_behave_like "an HTTP client"
@@ -88,7 +101,7 @@ describe HTTPI do
88
101
  end
89
102
 
90
103
  (HTTPI::Adapter::ADAPTERS.keys - [:net_http]).each do |adapter|
91
- unless adapter == :curb && RUBY_PLATFORM =~ /java/
104
+ unless (adapter == :curb && RUBY_PLATFORM =~ /java/) || adapter == :em_http
92
105
  context "using :#{adapter}" do
93
106
  let(:adapter) { adapter }
94
107
  it_should_behave_like "it works with HTTP digest auth"
@@ -0,0 +1,70 @@
1
+ require "webrick/https"
2
+ require "logger"
3
+ require "cgi"
4
+
5
+ # https://github.com/asakusarb/odrk-http-client
6
+ class SSLServer < WEBrick::HTTPServer
7
+ DIR = File.dirname(__FILE__)
8
+
9
+ def initialize(host, port)
10
+ @logger = Logger.new($stderr)
11
+ @logger.level = Logger::Severity::FATAL
12
+
13
+ super(
14
+ :BindAddress => host,
15
+ :Logger => logger,
16
+ :Port => port,
17
+ :AccessLog => [],
18
+ :DocumentRoot => DIR,
19
+ :SSLEnable => true,
20
+ :SSLCACertificateFile => File.join(DIR, "fixtures", "ca.pem"),
21
+ :SSLCertificate => cert("server.cert"),
22
+ :SSLPrivateKey => key("server.key"),
23
+ :SSLVerifyClient => nil, #OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT|OpenSSL::SSL::VERIFY_PEER,
24
+ :SSLClientCA => nil,
25
+ :SSLCertName => nil
26
+ )
27
+
28
+ self.mount(
29
+ "/hello",
30
+ WEBrick::HTTPServlet::ProcHandler.new(method("do_hello").to_proc)
31
+ )
32
+
33
+ @server_thread = start_server_thread(self)
34
+ end
35
+
36
+ def shutdown
37
+ super
38
+ @server_thread.join if defined?(RUBY_ENGINE) && RUBY_ENGINE == "rbx"
39
+ end
40
+
41
+ private
42
+
43
+ def cert(filename)
44
+ OpenSSL::X509::Certificate.new File.read(File.join(DIR, "fixtures", filename))
45
+ end
46
+
47
+ def key(filename)
48
+ OpenSSL::PKey::RSA.new File.read(File.join(DIR, "fixtures", filename))
49
+ end
50
+
51
+ def start_server_thread(server)
52
+ t = Thread.new { server.start }
53
+
54
+ while server.status != :Running
55
+ Thread.pass
56
+ unless t.alive?
57
+ t.join
58
+ raise
59
+ end
60
+ end
61
+
62
+ t
63
+ end
64
+
65
+ def do_hello(req, res)
66
+ res["Content-Type"] = "text/plain"
67
+ res.body = "hello ssl"
68
+ end
69
+
70
+ end
@@ -0,0 +1,102 @@
1
+ require "spec_helper"
2
+ require "httpi"
3
+ require "integration/ssl_server"
4
+
5
+ describe "SSL authentication" do
6
+
7
+ before :all do
8
+ WebMock.allow_net_connect!
9
+
10
+ @host = "localhost"
11
+ @port = 17171
12
+ @ssl_port = 17172
13
+ @proxy_port = 17173
14
+
15
+ @url = "http://#{@host}:#{@port}/"
16
+ @ssl_url = "https://localhost:#{@ssl_port}/"
17
+ @ssl_fake_url = "https://127.0.0.1:#{@ssl_port}/"
18
+ @proxy_url = "http://#{@host}:#{@proxy_port}/"
19
+
20
+ @ssl_server = SSLServer.new(@host, @ssl_port)
21
+ end
22
+
23
+ def teardown
24
+ @ssl_server.shutdown if @ssl_server
25
+ end
26
+
27
+ HTTPI::Adapter::ADAPTERS.keys.each do |adapter|
28
+ context "with #{adapter}" do
29
+
30
+ if adapter == :em_http && RUBY_VERSION =~ /1\.8/
31
+ # em_http depends on fibers
32
+ elsif adapter == :curb && RUBY_PLATFORM =~ /java/
33
+ # curb does not run on jruby
34
+ elsif adapter == :em_http && RUBY_VERSION >= "1.9.0" && RUBY_PLATFORM =~ /java/
35
+ it "fails for whatever reason"
36
+ else
37
+
38
+ if adapter == :em_http && RUBY_VERSION >= "1.9.0"
39
+ # dependencies are loaded upon request, so we need to manually require this
40
+ require "em-synchrony"
41
+
42
+ around(:each) do |example|
43
+ EM.synchrony do
44
+ example.run
45
+ EM.stop
46
+ end
47
+ end
48
+ end
49
+
50
+ # 105 ssl
51
+ if adapter == :httpclient || adapter == :curb
52
+ it "raises when no certificate was set up" do
53
+ expect { HTTPI.post(@ssl_url + "hello", "", adapter) }.
54
+ to raise_error(HTTPI::SSLError)
55
+ end
56
+ else
57
+ if adapter == :net_http && RUBY_VERSION >= "1.9"
58
+ it "raises in 1.9, but does not raise in 1.8"
59
+ else
60
+ it "does not raise when no certificate was set up" do
61
+ expect { HTTPI.post(@ssl_url + "hello", "", adapter) }.
62
+ to_not raise_error(HTTPI::SSLError)
63
+ end
64
+ end
65
+ end
66
+
67
+ # 106 ssl ca
68
+ it "works when set up properly" do
69
+ unless adapter == :em_http
70
+ ca_file = File.expand_path("../fixtures/ca_all.pem", __FILE__)
71
+ request = HTTPI::Request.new(@ssl_url + "hello")
72
+ request.auth.ssl.ca_cert_file = ca_file
73
+
74
+ response = HTTPI.get(request, adapter)
75
+ expect(response.body).to eq("hello ssl")
76
+ end
77
+ end
78
+
79
+ # 107 ssl hostname
80
+ if adapter == :em_http
81
+ it "raises when configured for ssl client auth" do
82
+ ca_file = File.expand_path("../fixtures/ca_all.pem", __FILE__)
83
+ request = HTTPI::Request.new(@ssl_fake_url + "hello")
84
+ request.auth.ssl.ca_cert_file = ca_file
85
+
86
+ expect { HTTPI.get(request, adapter) }.
87
+ to raise_error(HTTPI::NotSupportedError, "EM-HTTP-Request does not support SSL client auth")
88
+ end
89
+ else
90
+ it "raises when the server could not be verified" do
91
+ ca_file = File.expand_path("../fixtures/ca_all.pem", __FILE__)
92
+ request = HTTPI::Request.new(@ssl_fake_url + "hello")
93
+ request.auth.ssl.ca_cert_file = ca_file
94
+
95
+ expect { HTTPI.get(request, adapter) }.to raise_error(HTTPI::SSLError)
96
+ end
97
+ end
98
+
99
+ end
100
+ end
101
+ end
102
+ end
@@ -17,7 +17,7 @@ class Fixture
17
17
  @dime ||= load :xml_dime, :dime
18
18
  end
19
19
 
20
- private
20
+ private
21
21
 
22
22
  def load(fixture, type = :xml)
23
23
  File.read File.expand_path("../../fixtures/#{fixture}.#{type}", __FILE__)
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httpi
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease:
4
+ hash: -342245774
5
+ prerelease: 6
6
6
  segments:
7
+ - 2
8
+ - 0
9
+ - 0
10
+ - rc
7
11
  - 1
8
- - 1
9
- - 1
10
- version: 1.1.1
12
+ version: 2.0.0.rc1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Daniel Harrington
@@ -16,10 +18,11 @@ autorequire:
16
18
  bindir: bin
17
19
  cert_chain: []
18
20
 
19
- date: 2012-07-01 00:00:00 Z
21
+ date: 2012-11-10 00:00:00 +01:00
22
+ default_executable:
20
23
  dependencies:
21
24
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
25
+ requirement: &id001 !ruby/object:Gem::Requirement
23
26
  none: false
24
27
  requirements:
25
28
  - - ">="
@@ -28,104 +31,71 @@ dependencies:
28
31
  segments:
29
32
  - 0
30
33
  version: "0"
34
+ version_requirements: *id001
31
35
  name: rack
32
- type: :runtime
33
36
  prerelease: false
34
- requirement: *id001
37
+ type: :runtime
35
38
  - !ruby/object:Gem::Dependency
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
37
40
  none: false
38
41
  requirements:
39
42
  - - ~>
40
43
  - !ruby/object:Gem::Version
41
- hash: 49
44
+ hash: 25
42
45
  segments:
43
46
  - 0
44
- - 8
45
- - 7
46
- version: 0.8.7
47
+ - 9
48
+ version: "0.9"
49
+ version_requirements: *id002
47
50
  name: rake
48
- type: :development
49
51
  prerelease: false
50
- requirement: *id002
52
+ type: :development
51
53
  - !ruby/object:Gem::Dependency
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ requirement: &id003 !ruby/object:Gem::Requirement
53
55
  none: false
54
56
  requirements:
55
57
  - - ~>
56
58
  - !ruby/object:Gem::Version
57
- hash: 13
59
+ hash: 21
58
60
  segments:
59
61
  - 2
60
- - 7
61
- version: "2.7"
62
+ - 11
63
+ version: "2.11"
64
+ version_requirements: *id003
62
65
  name: rspec
63
- type: :development
64
66
  prerelease: false
65
- requirement: *id003
67
+ type: :development
66
68
  - !ruby/object:Gem::Dependency
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
69
+ requirement: &id004 !ruby/object:Gem::Requirement
68
70
  none: false
69
71
  requirements:
70
72
  - - ~>
71
73
  - !ruby/object:Gem::Version
72
- hash: 41
74
+ hash: 19
73
75
  segments:
74
76
  - 0
75
- - 9
76
- - 9
77
- version: 0.9.9
77
+ - 12
78
+ version: "0.12"
79
+ version_requirements: *id004
78
80
  name: mocha
79
- type: :development
80
81
  prerelease: false
81
- requirement: *id004
82
+ type: :development
82
83
  - !ruby/object:Gem::Dependency
83
- version_requirements: &id005 !ruby/object:Gem::Requirement
84
+ requirement: &id005 !ruby/object:Gem::Requirement
84
85
  none: false
85
86
  requirements:
86
87
  - - ~>
87
88
  - !ruby/object:Gem::Version
88
- hash: 7
89
+ hash: 31
89
90
  segments:
90
91
  - 1
91
- - 4
92
- - 0
93
- version: 1.4.0
92
+ - 8
93
+ version: "1.8"
94
+ version_requirements: *id005
94
95
  name: webmock
95
- type: :development
96
96
  prerelease: false
97
- requirement: *id005
98
- - !ruby/object:Gem::Dependency
99
- version_requirements: &id006 !ruby/object:Gem::Requirement
100
- none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 3
105
- segments:
106
- - 0
107
- version: "0"
108
- name: autotest
109
97
  type: :development
110
- prerelease: false
111
- requirement: *id006
112
- - !ruby/object:Gem::Dependency
113
- version_requirements: &id007 !ruby/object:Gem::Requirement
114
- none: false
115
- requirements:
116
- - - "="
117
- - !ruby/object:Gem::Version
118
- hash: 43
119
- segments:
120
- - 4
121
- - 5
122
- - 0
123
- version: 4.5.0
124
- name: ZenTest
125
- type: :development
126
- prerelease: false
127
- requirement: *id007
128
- description: HTTPI provides a common interface for Ruby HTTP libraries.
98
+ description: HTTPI provides a common interface for Ruby's HTTP libraries
129
99
  email: me@rubiii.com
130
100
  executables: []
131
101
 
@@ -136,6 +106,7 @@ extra_rdoc_files: []
136
106
  files:
137
107
  - .gitignore
138
108
  - .rspec
109
+ - .rvmrc
139
110
  - .travis.yml
140
111
  - CHANGELOG.md
141
112
  - Gemfile
@@ -145,7 +116,9 @@ files:
145
116
  - httpi.gemspec
146
117
  - lib/httpi.rb
147
118
  - lib/httpi/adapter.rb
119
+ - lib/httpi/adapter/base.rb
148
120
  - lib/httpi/adapter/curb.rb
121
+ - lib/httpi/adapter/em_http.rb
149
122
  - lib/httpi/adapter/httpclient.rb
150
123
  - lib/httpi/adapter/net_http.rb
151
124
  - lib/httpi/auth/config.rb
@@ -163,7 +136,9 @@ files:
163
136
  - spec/fixtures/xml.xml
164
137
  - spec/fixtures/xml_dime.dime
165
138
  - spec/fixtures/xml_dime.xml
139
+ - spec/httpi/adapter/base_spec.rb
166
140
  - spec/httpi/adapter/curb_spec.rb
141
+ - spec/httpi/adapter/em_http_spec.rb
167
142
  - spec/httpi/adapter/httpclient_spec.rb
168
143
  - spec/httpi/adapter/net_http_spec.rb
169
144
  - spec/httpi/adapter_spec.rb
@@ -174,12 +149,22 @@ files:
174
149
  - spec/httpi/httpi_spec.rb
175
150
  - spec/httpi/request_spec.rb
176
151
  - spec/httpi/response_spec.rb
152
+ - spec/integration/fixtures/ca.pem
153
+ - spec/integration/fixtures/ca_all.pem
154
+ - spec/integration/fixtures/htdigest
155
+ - spec/integration/fixtures/htpasswd
156
+ - spec/integration/fixtures/server.cert
157
+ - spec/integration/fixtures/server.key
158
+ - spec/integration/fixtures/subca.pem
177
159
  - spec/integration/request_spec.rb
178
160
  - spec/integration/server.rb
161
+ - spec/integration/ssl_server.rb
162
+ - spec/integration/ssl_spec.rb
179
163
  - spec/spec_helper.rb
180
164
  - spec/support/fixture.rb
181
165
  - spec/support/matchers.rb
182
- homepage: http://github.com/rubiii/httpi
166
+ has_rdoc: true
167
+ homepage: http://github.com/savonrb/httpi
183
168
  licenses: []
184
169
 
185
170
  post_install_message:
@@ -199,18 +184,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
199
184
  required_rubygems_version: !ruby/object:Gem::Requirement
200
185
  none: false
201
186
  requirements:
202
- - - ">="
187
+ - - ">"
203
188
  - !ruby/object:Gem::Version
204
- hash: 3
189
+ hash: 25
205
190
  segments:
206
- - 0
207
- version: "0"
191
+ - 1
192
+ - 3
193
+ - 1
194
+ version: 1.3.1
208
195
  requirements: []
209
196
 
210
197
  rubyforge_project: httpi
211
- rubygems_version: 1.8.21
198
+ rubygems_version: 1.6.2
212
199
  signing_key:
213
200
  specification_version: 3
214
- summary: Interface for Ruby HTTP libraries
201
+ summary: Common interface for Ruby's HTTP libraries
215
202
  test_files: []
216
203