http 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +9 -0
- data/CHANGES.md +6 -0
- data/lib/http/client.rb +2 -7
- data/lib/http/options.rb +9 -4
- data/lib/http/request.rb +3 -9
- data/lib/http/version.rb +1 -1
- data/spec/lib/http/request_spec.rb +14 -9
- data/spec/lib/http_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6855d98f9ce4716fb04fda587060dfcc2869b378
|
4
|
+
data.tar.gz: cc3dd5823219d9c1043d59a4ecd28783f3a54314
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac67b4ffeddb6b1fc1f53c8c9ccc75cae95dfa2fe834f7c9ef4f997734b846a4f380fdc61c8216239e95fa666b774f1083653193357006a31b7c83404747484b
|
7
|
+
data.tar.gz: 5a41152c4bf84a18db3b9bfe93dca7cb94d68176d0c02038efc21c8955915ebbf11a36535c867e762ddb09c7385ea9b235ac37d9fe2b605ce0ea6a20bb8495dc
|
data/.rubocop.yml
CHANGED
@@ -57,6 +57,15 @@ Style/Lambda:
|
|
57
57
|
Style/SingleSpaceBeforeFirstArg:
|
58
58
|
Enabled: false
|
59
59
|
|
60
|
+
Style/SpaceAroundOperators:
|
61
|
+
MultiSpaceAllowedForOperators:
|
62
|
+
- "="
|
63
|
+
- "=>"
|
64
|
+
- "||"
|
65
|
+
- "||="
|
66
|
+
- "&&"
|
67
|
+
- "&&="
|
68
|
+
|
60
69
|
Style/SpaceInsideHashLiteralBraces:
|
61
70
|
EnforcedStyle: no_space
|
62
71
|
|
data/CHANGES.md
CHANGED
data/lib/http/client.rb
CHANGED
@@ -104,8 +104,8 @@ module HTTP
|
|
104
104
|
|
105
105
|
# Verify our request isn't going to be made against another URI
|
106
106
|
def verify_connection!(uri)
|
107
|
-
if default_options.persistent? &&
|
108
|
-
fail StateError, "Persistence is enabled for #{default_options.persistent}, but we got #{
|
107
|
+
if default_options.persistent? && uri.origin != default_options.persistent
|
108
|
+
fail StateError, "Persistence is enabled for #{default_options.persistent}, but we got #{uri.origin}"
|
109
109
|
# We re-create the connection object because we want to let prior requests
|
110
110
|
# lazily load the body as long as possible, and this mimics prior functionality.
|
111
111
|
elsif @connection && (!@connection.keep_alive? || @connection.expired?)
|
@@ -117,11 +117,6 @@ module HTTP
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
|
-
# Strips out query/path to give us a consistent way of comparing hosts
|
121
|
-
def base_host(uri)
|
122
|
-
uri.omit(:query, :path).to_s
|
123
|
-
end
|
124
|
-
|
125
120
|
# Merges query params if needed
|
126
121
|
#
|
127
122
|
# @param [#to_s] uri
|
data/lib/http/options.rb
CHANGED
@@ -2,6 +2,7 @@ require "http/headers"
|
|
2
2
|
require "openssl"
|
3
3
|
require "socket"
|
4
4
|
require "http/cache/null_cache"
|
5
|
+
require "http/uri"
|
5
6
|
|
6
7
|
module HTTP
|
7
8
|
class Options
|
@@ -81,6 +82,14 @@ module HTTP
|
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
85
|
+
def persistent=(value)
|
86
|
+
@persistent = value ? HTTP::URI.parse(value).origin : nil
|
87
|
+
end
|
88
|
+
|
89
|
+
def persistent?
|
90
|
+
!persistent.nil?
|
91
|
+
end
|
92
|
+
|
84
93
|
def_option :cache do |cache_or_cache_options|
|
85
94
|
if cache_or_cache_options.respond_to? :perform
|
86
95
|
cache_or_cache_options
|
@@ -90,10 +99,6 @@ module HTTP
|
|
90
99
|
end
|
91
100
|
end
|
92
101
|
|
93
|
-
def persistent?
|
94
|
-
!persistent.nil? && persistent != ""
|
95
|
-
end
|
96
|
-
|
97
102
|
def [](option)
|
98
103
|
send(option) rescue nil
|
99
104
|
end
|
data/lib/http/request.rb
CHANGED
@@ -59,13 +59,6 @@ module HTTP
|
|
59
59
|
# Scheme is normalized to be a lowercase symbol e.g. :http, :https
|
60
60
|
attr_reader :scheme
|
61
61
|
|
62
|
-
# The following alias may be removed in two minor versions (0.8.0) or one
|
63
|
-
# major version (1.0.0)
|
64
|
-
def __method__(*args)
|
65
|
-
warn "#{Kernel.caller.first}: [DEPRECATION] HTTP::Request#__method__ is deprecated. Use #method instead."
|
66
|
-
method(*args)
|
67
|
-
end
|
68
|
-
|
69
62
|
# "Request URI" as per RFC 2616
|
70
63
|
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
|
71
64
|
attr_reader :uri
|
@@ -74,7 +67,7 @@ module HTTP
|
|
74
67
|
# :nodoc:
|
75
68
|
def initialize(verb, uri, headers = {}, proxy = {}, body = nil, version = "1.1") # rubocop:disable ParameterLists
|
76
69
|
@verb = verb.to_s.downcase.to_sym
|
77
|
-
@uri = HTTP::URI.parse
|
70
|
+
@uri = HTTP::URI.parse(uri).normalize
|
78
71
|
@scheme = @uri.scheme && @uri.scheme.to_s.downcase.to_sym
|
79
72
|
|
80
73
|
fail(UnsupportedMethodError, "unknown method: #{verb}") unless METHODS.include?(@verb)
|
@@ -119,7 +112,8 @@ module HTTP
|
|
119
112
|
|
120
113
|
# Compute HTTP request header for direct or proxy request
|
121
114
|
def request_header
|
122
|
-
|
115
|
+
request_uri = using_proxy? ? uri : uri.omit(:scheme, :authority)
|
116
|
+
"#{verb.to_s.upcase} #{request_uri} HTTP/#{version}"
|
123
117
|
end
|
124
118
|
|
125
119
|
# Host for tcp socket
|
data/lib/http/version.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
RSpec.describe HTTP::Request do
|
2
|
+
let(:proxy) { {} }
|
2
3
|
let(:headers) { {:accept => "text/html"} }
|
3
|
-
let(:request_uri) { "http://example.com/" }
|
4
|
+
let(:request_uri) { "http://example.com/foo?bar=baz#moo" }
|
4
5
|
|
5
|
-
subject(:request) { HTTP::Request.new(:get, request_uri, headers) }
|
6
|
+
subject(:request) { HTTP::Request.new(:get, request_uri, headers, proxy) }
|
6
7
|
|
7
8
|
it "includes HTTP::Headers::Mixin" do
|
8
9
|
expect(described_class).to include HTTP::Headers::Mixin
|
@@ -21,13 +22,6 @@ RSpec.describe HTTP::Request do
|
|
21
22
|
expect(subject.verb).to eq(:get)
|
22
23
|
end
|
23
24
|
|
24
|
-
it "provides a #__method__ method that outputs a deprecation warning and delegates to Object#method" do
|
25
|
-
warning = capture_warning do
|
26
|
-
expect(subject.__method__(:verb)).to eq(subject.method(:verb))
|
27
|
-
end
|
28
|
-
expect(warning).to match(/\[DEPRECATION\] HTTP::Request#__method__ is deprecated\. Use #method instead\.$/)
|
29
|
-
end
|
30
|
-
|
31
25
|
it "sets given headers" do
|
32
26
|
expect(subject["Accept"]).to eq("text/html")
|
33
27
|
end
|
@@ -143,4 +137,15 @@ RSpec.describe HTTP::Request do
|
|
143
137
|
subject { request.caching }
|
144
138
|
it { is_expected.to be_a HTTP::Request::Caching }
|
145
139
|
end
|
140
|
+
|
141
|
+
describe "#request_header" do
|
142
|
+
subject { request.request_header }
|
143
|
+
|
144
|
+
it { is_expected.to eq "GET /foo?bar=baz#moo HTTP/1.1" }
|
145
|
+
|
146
|
+
context "with proxy" do
|
147
|
+
let(:proxy) { {:user => "user", :pass => "pass"} }
|
148
|
+
it { is_expected.to eq "GET http://example.com/foo?bar=baz#moo HTTP/1.1" }
|
149
|
+
end
|
150
|
+
end
|
146
151
|
end
|
data/spec/lib/http_spec.rb
CHANGED
@@ -152,7 +152,7 @@ RSpec.describe HTTP do
|
|
152
152
|
it "sets Authorization header with proper BasicAuth value" do
|
153
153
|
client = HTTP.basic_auth :user => "foo", :pass => "bar"
|
154
154
|
expect(client.default_headers[:authorization])
|
155
|
-
.to match(
|
155
|
+
.to match(%r{^Basic [A-Za-z0-9+/]+=*$})
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Arcieri
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-04-
|
13
|
+
date: 2015-04-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: http_parser.rb
|