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