Extract HTTP::Client#build_request method#458
Extract HTTP::Client#build_request method#458ixti merged 2 commits intohttprb:masterfrom umbrellio:add-prepare-request-method
Conversation
|
I think we will completely refactor this bit in v4.0.0; I think that after all @tarcieri any objections? |
lib/http/client.rb
Outdated
| end | ||
|
|
||
| # Prepare an HTTP request | ||
| def prepare_request(verb, uri, opts = {}) # rubocop:disable Style/OptionHash |
There was a problem hiding this comment.
Please rename this to build_request. IMO it would better reflect what method does.
|
So, is it going to be merged? |
|
Yeah. I think it's good. Thank you! |
|
@ixti Can we backport it to version 3 by the way? |
|
@tycooon Sure. It does not brings any breaking changes - so totally fine - will handle this. |
Squashed commit of the following:
commit 15be2e59d4eb1b0d8c9bb6f1a8d2956421635ba0
Author: Yuri Smirnov <tycooon@yandex.ru>
Date: Mon Feb 12 15:31:47 2018 +0300
rename #prepare_request to #build_request
commit 9fab69049aef13edcdc8e3714618322f6d9c9e71
Author: Yuri Smirnov <tycooon@yandex.ru>
Date: Mon Feb 12 13:36:37 2018 +0300
extract prepare_request method
See: #458
|
@tycooon REleased as 3.3.0 |
|
Thanks! With recent backports, I was able to remove a lot of code in one of my gems :) |
pkgsrc changes: - update HOMEPAGE (follow renamed github) Upstream changes (from CHANGES.md): ## 3.3.0 (2018-04-25) This version backports some of the fixes and improvements made to development version of the HTTP gem: * [#458](httprb/http#458) Extract HTTP::Client#build_request method. ([@tycoon]) ## 3.2.1 (2018-04-24) * [#468](httprb/http#468) Rewind `HTTP::Request::Body#source` once `#each` is complete. ([@ixti]) ## 3.2.0 (2018-04-22) This version backports one change we missed to backport in previous release: * Reduce memory usage when reading response body ([@janko-m]) ## 3.1.0 (2018-04-22) This version backports some of the fixes and improvements made to development version of the HTTP gem: * Fix for `#readpartial` to respect max length argument. ([@janko-m], [@marshall-lee]) * Fix for `HTTP::Request#headline` to allow two leading slashes in path. ([@scarfacedeb]) * Fix query string building for string with newlines. ([@mikegee]) * Deallocate temporary strings in `Response::Body#to_s`. ([@janko-m]) * Add `Request::Body#source`. ([@janko-m])
|
What's the way to perform the built request? |
|
What I have now is: request = HTTP.build_request(...)
client = HTTP::Client.new
client.perform(request, client.default_options) |
Update ruby-http to 4.4.1. ## 4.4.1 (2020-03-29) * Backport [#590](httprb/http#590) Fix parser failing on some edge cases. ([@ixti]) ## 4.4.0 (2020-03-25) * Backport [#587](httprb/http#587) Fix redirections when server responds with multiple Location headers. ([@ixti]) * Backport [#599](httprb/http#599) Allow passing HTTP::FormData::{Multipart,UrlEncoded} object directly. ([@ixti]) ## 4.3.0 (2020-01-09) * Backport [#581](httprb/http#581) Add Ruby-2.7 compatibility. ([@ixti], [@janko]) ## 4.2.0 (2019-10-22) * Backport [#489](httprb/http#489) Fix HTTP parser. ([@ixti], [@fxposter]) ## 4.1.1 (2019-03-12) * Add `HTTP::Headers::ACCEPT_ENCODING` constant. ([@ixti]) ## 4.1.0 (2019-03-11) * [#533](httprb/http#533) Add URI normalizer feature that allows to swap default URI normalizer. ([@mamoonraja]) ## 4.0.5 (2019-02-15) * Backport [#532](httprb/http#532) from master. Fix pipes support in request bodies. ([@ixti]) ## 4.0.4 (2019-02-12) * Backport [#506](httprb/http#506) from master. Skip auto-deflate when there is no body. ([@Bonias]) ## 4.0.3 (2019-01-18) * Fix missing URL in response wrapped by auto inflate. ([@ixti]) * Provide `HTTP::Request#inspect` method for debugging purposes. ([@ixti]) ## 4.0.2 (2019-01-15) * [#506](httprb/http#506) Fix instrumentation feature. ([@paul]) ## 4.0.1 (2019-01-14) * [#515](httprb/http#515) Fix `#build_request` and `#request` to respect default options. ([@RickCSong]) ## 4.0.0 (2018-10-15) * [#482](httprb/http#482) [#499](httprb/http#499) Introduce new features injection API with 2 new feaures: instrumentation (compatible with ActiveSupport::Notification) and logging. ([@paul]) * [#473](httprb/http#473) Handle early responses. ([@janko-m]) * [#468](httprb/http#468) Rewind `HTTP::Request::Body#source` once `#each` is complete. ([@ixti]) * [#467](httprb/http#467) Drop Ruby 2.2 support. ([@ixti]) * [#436](httprb/http#436) Raise ConnectionError when writing to socket fails. ([@janko-m]) * [#438](httprb/http#438) Expose `HTTP::Request::Body#source`. ([@janko-m]) * [#446](httprb/http#446) Simplify setting a timeout. ([@mikegee]) * [#451](httprb/http#451) Reduce memory usage when reading response body. ([@janko-m]) * [#458](httprb/http#458) Extract HTTP::Client#build_request method. ([@tycoon]) * [#462](httprb/http#462) Fix HTTP::Request#headline to allow two leading slashes in path. ([@scarfacedeb]) * [#454](httprb/http#454) [#464](httprb/http#464) [#384](httprb/http#384) Fix #readpartial not respecting max length argument. ([@janko-m], [@marshall-lee])
It would sometimes be handy to have a public method that returns a request object so that we can modify it and/or pass around and then use
performon it.Please take a look and if you find the idea is OK I will add specs etc.