Skip to content

Commit a4459c6

Browse files
committed
Fixed Ruby v1.9.3 bug with URI
1 parent 3b1953f commit a4459c6

File tree

5 files changed

+31
-10
lines changed

5 files changed

+31
-10
lines changed

CHANGELOG.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,14 @@
66

77
```ruby
88
http = HTTPWrapper.new
9-
request = Net::HTTP::Head.new URI('http://example.com')
10-
http.execute request
9+
uri = URI 'http://example.com'
10+
11+
# Ruby v2.0.0
12+
request = Net::HTTP::Head.new uri
13+
# Ruby v1.9.3
14+
request = Net::HTTP::Head.new uri.request_uri
15+
16+
http.execute request, uri
1117
```
1218

1319
* added ability to upload files with `multipart/form-data` content type

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,14 @@ http.get sample_url, headers: { user_agent: 'custom user agent' }
243243
### Perform own custom Net::HTTP requests
244244

245245
```ruby
246-
request = Net::HTTP::Head.new URI('http://example.com')
247-
http.execute request
246+
uri = URI 'http://example.com'
247+
248+
# Ruby 2.0.0
249+
request = Net::HTTP::Head.new uri
250+
# Ruby 1.9.3
251+
request = Net::HTTP::Head.new uri.request_uri
252+
253+
http.execute request, uri
248254
```
249255

250256
### Full params hash example

lib/http_wrapper/http_wrapper.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ def post_and_get_cookie(url, params = {})
3737
response.response['set-cookie']
3838
end
3939

40-
def execute(request)
41-
connection = create_connection request.uri
40+
def execute(request, uri)
41+
connection = create_connection uri
4242
connection.request request
4343
end
4444

@@ -55,7 +55,7 @@ def validate_options(options)
5555
def get_response(request, redirects_limit = @max_redirects)
5656
raise TooManyRedirectsError.new 'Too many redirects!' if redirects_limit == 0
5757

58-
response = execute request.create
58+
response = execute request.create, request.uri
5959

6060
if response.kind_of? Net::HTTPRedirection
6161
request.uri = response['location']

lib/http_wrapper/request.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ def convert_symbol_headers_to_string
7676
end
7777

7878
def create_http_request
79-
@request = @method_class.new @uri, @headers
79+
# Ruby v1.9.3 doesn't understand full URI object, it needs just path :(
80+
uri = RUBY_VERSION =~ /\A2/ ? @uri : @uri.request_uri
81+
@request = @method_class.new uri, @headers
8082
set_cookies
8183
set_body
8284
set_basic_auth

spec/http_wrapper_spec.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,15 @@
239239
it 'should perform request for custom Net::HTTP request instance' do
240240
stub_request :head, sample_url
241241
uri = URI sample_url
242-
request = Net::HTTP::Head.new uri
243-
subject.execute request
242+
243+
if RUBY_VERSION =~ /\A2/
244+
request = Net::HTTP::Head.new uri
245+
subject.execute request, request.uri
246+
else
247+
# Ruby v1.9.3 doesn't understand full URI object, it needs just path :(
248+
request = Net::HTTP::Head.new uri.request_uri
249+
subject.execute request, uri
250+
end
244251
end
245252
end
246253
end

0 commit comments

Comments
 (0)