lib/http/client.rb in http-4.4.1 vs lib/http/client.rb in http-5.0.0.pre
- old
+ new
@@ -40,18 +40,18 @@
def build_request(verb, uri, opts = {}) # rubocop:disable Style/OptionHash
opts = @default_options.merge(opts)
uri = make_request_uri(uri, opts)
headers = make_request_headers(opts)
body = make_request_body(opts, headers)
+ proxy = opts.proxy
req = HTTP::Request.new(
- :verb => verb,
- :uri => uri,
- :uri_normalizer => opts.feature(:normalize_uri)&.normalizer,
- :proxy => opts.proxy,
- :headers => headers,
- :body => body
+ :verb => verb,
+ :uri => uri,
+ :headers => headers,
+ :proxy => proxy,
+ :body => body
)
opts.features.inject(req) do |request, (_name, feature)|
feature.wrap_request(request)
end
@@ -158,32 +158,33 @@
unless cookies.empty?
cookies = opts.headers.get(Headers::COOKIE).concat(cookies).join("; ")
headers[Headers::COOKIE] = cookies
end
+ if (auto_deflate = opts.feature(:auto_deflate))
+ # We need to delete Content-Length header. It will be set automatically
+ # by HTTP::Request::Writer
+ headers.delete(Headers::CONTENT_LENGTH)
+
+ headers[Headers::CONTENT_ENCODING] = auto_deflate.method
+ end
+
headers
end
# Create the request body object to send
def make_request_body(opts, headers)
case
when opts.body
opts.body
when opts.form
- form = make_form_data(opts.form)
+ form = HTTP::FormData.create opts.form
headers[Headers::CONTENT_TYPE] ||= form.content_type
form
when opts.json
body = MimeType[:json].encode opts.json
headers[Headers::CONTENT_TYPE] ||= "application/json; charset=#{body.encoding.name}"
body
end
- end
-
- def make_form_data(form)
- return form if form.is_a? HTTP::FormData::Multipart
- return form if form.is_a? HTTP::FormData::Urlencoded
-
- HTTP::FormData.create(form)
end
end
end