Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract HTTP::Client#build_request method #458

Merged
merged 2 commits into from
Feb 14, 2018
Merged

Extract HTTP::Client#build_request method #458

merged 2 commits into from
Feb 14, 2018

Conversation

tycooon
Copy link
Contributor

@tycooon tycooon commented Feb 12, 2018

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 perform on it.
Please take a look and if you find the idea is OK I will add specs etc.

@ixti
Copy link
Member

ixti commented Feb 12, 2018

I think we will completely refactor this bit in v4.0.0; I think that after all #request must return Request instance, that will respond to #perform. In any case I'm fine to merge it to v3.x branch and to the master (for sake of keeping things in sync).

@tarcieri any objections?

end

# Prepare an HTTP request
def prepare_request(verb, uri, opts = {}) # rubocop:disable Style/OptionHash
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please rename this to build_request. IMO it would better reflect what method does.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, done.

@tycooon tycooon changed the title Extract HTTP::Client#prepare_request method Extract HTTP::Client#build_request method Feb 12, 2018
@tycooon
Copy link
Contributor Author

tycooon commented Feb 14, 2018

So, is it going to be merged?

@ixti ixti merged commit d09394c into httprb:master Feb 14, 2018
@ixti
Copy link
Member

ixti commented Feb 14, 2018

Yeah. I think it's good. Thank you!

@tycooon
Copy link
Contributor Author

tycooon commented Apr 25, 2018

@ixti Can we backport it to version 3 by the way?

@ixti
Copy link
Member

ixti commented Apr 25, 2018

@tycooon Sure. It does not brings any breaking changes - so totally fine - will handle this.

ixti added a commit that referenced this pull request Apr 25, 2018
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
@ixti
Copy link
Member

ixti commented Apr 25, 2018

@tycooon REleased as 3.3.0

@tycooon
Copy link
Contributor Author

tycooon commented Apr 25, 2018

Thanks! With recent backports, I was able to remove a lot of code in one of my gems :)
umbrellio/ezclient@v0.15.2...v0.16.0

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Apr 29, 2018
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])
@shanecav84
Copy link

What's the way to perform the built request?

@shanecav84
Copy link

shanecav84 commented Aug 4, 2019

What I have now is:

request = HTTP.build_request(...)
client = HTTP::Client.new
client.perform(request, client.default_options)

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jun 7, 2020
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])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants