httpi 0.6.0 → 0.6.1

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/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ .DS_Store
2
+ .yardoc
3
+ doc
4
+ coverage
5
+ tmp
6
+ *~
7
+ *.gem
8
+ .bundle
9
+ Gemfile.lock
data/README.md CHANGED
@@ -121,6 +121,10 @@ HTTPI::Auth
121
121
  request = HTTPI::Request.new
122
122
  request.auth.basic "username", "password"
123
123
 
124
+ ### TODO
125
+
126
+ * Add support for NTLM authentication
127
+
124
128
  HTTPI::Auth::SSL
125
129
  ----------------
126
130
 
@@ -138,10 +142,6 @@ HTTPI::Auth::SSL
138
142
  request.auth.ssl.cert_file = "client_cert.pem"
139
143
  request.auth.ssl.verify_mode = :none
140
144
 
141
- ### TODO
142
-
143
- * Add support for NTLM authentication
144
-
145
145
  HTTPI::Adapter
146
146
  --------------
147
147
 
data/httpi.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ lib = File.expand_path("../lib/", __FILE__)
2
+ $:.unshift lib unless $:.include?(lib)
3
+
4
+ require "httpi/version"
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "httpi"
8
+ s.version = HTTPI::VERSION
9
+ s.authors = ["Daniel Harrington", "Martin Tepper"]
10
+ s.email = "me@rubiii.com"
11
+ s.homepage = "http://github.com/rubiii/#{s.name}"
12
+ s.summary = "Interface for Ruby HTTP libraries"
13
+ s.description = "HTTPI provides a common interface for Ruby HTTP libraries."
14
+
15
+ s.rubyforge_project = s.name
16
+
17
+ s.add_development_dependency "httpclient", "~> 2.1.5"
18
+ s.add_development_dependency "curb", "~> 0.7.8"
19
+
20
+ s.add_development_dependency "rspec", "2.0.0"
21
+ s.add_development_dependency "mocha", "~> 0.9.9"
22
+ s.add_development_dependency "webmock", "~> 1.4.0"
23
+
24
+ s.files = `git ls-files`.split("\n")
25
+ s.require_path = "lib"
26
+ end
@@ -85,7 +85,34 @@ module HTTPI
85
85
  end
86
86
 
87
87
  def respond_with(client)
88
- Response.new client.response_code, client.headers, client.body_str
88
+ status, headers = parse_header_string(client.header_str)
89
+ Response.new client.response_code, headers, client.body_str
90
+ end
91
+
92
+ # Borrowed from Webmock's Curb adapter:
93
+ # http://github.com/bblimke/webmock/blob/master/lib/webmock/http_lib_adapters/curb.rb
94
+ def parse_header_string(header_string)
95
+ status, headers = nil, {}
96
+ return [status, headers] unless header_string
97
+
98
+ header_string.split(/\r\n/).each do |header|
99
+ if header =~ %r|^HTTP/1.[01] \d\d\d (.*)|
100
+ status = $1
101
+ else
102
+ parts = header.split(':', 2)
103
+ unless parts.empty?
104
+ parts[1].strip! unless parts[1].nil?
105
+ if headers.has_key?(parts[0])
106
+ headers[parts[0]] = [headers[parts[0]]] unless headers[parts[0]].kind_of? Array
107
+ headers[parts[0]] << parts[1]
108
+ else
109
+ headers[parts[0]] = parts[1]
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+ [status, headers]
89
116
  end
90
117
 
91
118
  end
@@ -90,7 +90,7 @@ module HTTPI
90
90
  end
91
91
 
92
92
  def respond_with(response)
93
- Response.new response.code, Hash[response.header.all], response.content
93
+ Response.new response.code, Hash[response.header.all.flatten], response.content
94
94
  end
95
95
 
96
96
  end
data/lib/httpi/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module HTTPI
2
2
 
3
- VERSION = "0.6.0"
3
+ VERSION = "0.6.1"
4
4
 
5
5
  end
@@ -19,7 +19,7 @@ describe HTTPI::Adapter::Curb do
19
19
  before do
20
20
  curb.expects(:http_get)
21
21
  curb.expects(:response_code).returns(200)
22
- curb.expects(:headers).returns(Hash.new)
22
+ curb.expects(:header_str).returns("")
23
23
  curb.expects(:body_str).returns(Fixture.xml)
24
24
  end
25
25
 
@@ -32,7 +32,7 @@ describe HTTPI::Adapter::Curb do
32
32
  before do
33
33
  curb.expects(:http_post)
34
34
  curb.expects(:response_code).returns(200)
35
- curb.expects(:headers).returns(Hash.new)
35
+ curb.expects(:header_str).returns("")
36
36
  curb.expects(:body_str).returns(Fixture.xml)
37
37
  end
38
38
 
@@ -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(:headers).returns(Hash.new)
48
+ curb.expects(:header_str).returns("")
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(:headers).returns(Hash.new)
61
+ curb.expects(:header_str).returns("")
62
62
  curb.expects(:body_str).returns(Fixture.xml)
63
63
  end
64
64
 
@@ -71,7 +71,7 @@ describe HTTPI::Adapter::Curb do
71
71
  before do
72
72
  curb.expects(:http_delete)
73
73
  curb.expects(:response_code).returns(200)
74
- curb.expects(:headers).returns(Hash.new)
74
+ curb.expects(:header_str).returns("")
75
75
  curb.expects(:body_str).returns("")
76
76
  end
77
77
 
@@ -207,7 +207,7 @@ describe HTTPI do
207
207
 
208
208
  describe ".#{method}" do
209
209
  it "should raise an ArgumentError in case of an invalid adapter" do
210
- lambda { client.request method, request, :invalid }.should raise_error(ArgumentError)
210
+ lambda { client.request method, HTTPI::Request.new, :invalid }.should raise_error(ArgumentError)
211
211
  end
212
212
 
213
213
  it "should raise an ArgumentError in case of an invalid request" do
data/spec/spec_helper.rb CHANGED
@@ -3,7 +3,7 @@ require "mocha"
3
3
  require "webmock/rspec"
4
4
 
5
5
  RSpec.configure do |config|
6
- config.include WebMock
6
+ config.include WebMock::API
7
7
  config.mock_with :mocha
8
8
  end
9
9
 
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: 7
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 0
10
- version: 0.6.0
9
+ - 1
10
+ version: 0.6.1
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: 2010-10-15 00:00:00 +02:00
19
+ date: 2010-11-01 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -57,7 +57,7 @@ dependencies:
57
57
  requirement: &id003 !ruby/object:Gem::Requirement
58
58
  none: false
59
59
  requirements:
60
- - - ~>
60
+ - - "="
61
61
  - !ruby/object:Gem::Version
62
62
  hash: 15
63
63
  segments:
@@ -75,12 +75,12 @@ dependencies:
75
75
  requirements:
76
76
  - - ~>
77
77
  - !ruby/object:Gem::Version
78
- hash: 43
78
+ hash: 41
79
79
  segments:
80
80
  - 0
81
81
  - 9
82
- - 8
83
- version: 0.9.8
82
+ - 9
83
+ version: 0.9.9
84
84
  type: :development
85
85
  version_requirements: *id004
86
86
  - !ruby/object:Gem::Dependency
@@ -91,12 +91,12 @@ dependencies:
91
91
  requirements:
92
92
  - - ~>
93
93
  - !ruby/object:Gem::Version
94
- hash: 17
94
+ hash: 7
95
95
  segments:
96
96
  - 1
97
- - 3
98
- - 5
99
- version: 1.3.5
97
+ - 4
98
+ - 0
99
+ version: 1.4.0
100
100
  type: :development
101
101
  version_requirements: *id005
102
102
  description: HTTPI provides a common interface for Ruby HTTP libraries.
@@ -108,24 +108,25 @@ extensions: []
108
108
  extra_rdoc_files: []
109
109
 
110
110
  files:
111
+ - .autotest
112
+ - .gitignore
113
+ - .rspec
111
114
  - Gemfile
112
- - Gemfile.lock
113
115
  - LICENSE
114
- - Rakefile
115
116
  - README.md
116
- - .autotest
117
- - .rspec
117
+ - Rakefile
118
118
  - autotest/discover.rb
119
+ - httpi.gemspec
120
+ - lib/httpi.rb
121
+ - lib/httpi/adapter.rb
119
122
  - lib/httpi/adapter/curb.rb
120
123
  - lib/httpi/adapter/httpclient.rb
121
124
  - lib/httpi/adapter/net_http.rb
122
- - lib/httpi/adapter.rb
123
125
  - lib/httpi/auth/config.rb
124
126
  - lib/httpi/auth/ssl.rb
125
127
  - lib/httpi/request.rb
126
128
  - lib/httpi/response.rb
127
129
  - lib/httpi/version.rb
128
- - lib/httpi.rb
129
130
  - spec/fixtures/client_cert.pem
130
131
  - spec/fixtures/client_key.pem
131
132
  - spec/fixtures/xml.gz
data/Gemfile.lock DELETED
@@ -1,40 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- httpi (0.5.0)
5
-
6
- GEM
7
- remote: http://rubygems.org/
8
- specs:
9
- addressable (2.2.1)
10
- crack (0.1.8)
11
- curb (0.7.8)
12
- diff-lcs (1.1.2)
13
- httpclient (2.1.5.2)
14
- mocha (0.9.8)
15
- rake
16
- rake (0.8.7)
17
- rspec (2.0.0)
18
- rspec-core (= 2.0.0)
19
- rspec-expectations (= 2.0.0)
20
- rspec-mocks (= 2.0.0)
21
- rspec-core (2.0.0)
22
- rspec-expectations (2.0.0)
23
- diff-lcs (>= 1.1.2)
24
- rspec-mocks (2.0.0)
25
- rspec-core (= 2.0.0)
26
- rspec-expectations (= 2.0.0)
27
- webmock (1.3.5)
28
- addressable (>= 2.1.1)
29
- crack (>= 0.1.7)
30
-
31
- PLATFORMS
32
- ruby
33
-
34
- DEPENDENCIES
35
- curb (~> 0.7.8)
36
- httpclient (~> 2.1.5)
37
- httpi!
38
- mocha (~> 0.9.8)
39
- rspec (~> 2.0.0)
40
- webmock (~> 1.3.5)