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

Add Request::Body#source #438

Merged
merged 2 commits into from
Nov 13, 2017

Conversation

janko
Copy link
Member

@janko janko commented Oct 23, 2017

This makes it possible to access the original body object, which httplog needs to log request bodies.

Related to #437.

This makes it possible to access the original body object.
@janko
Copy link
Member Author

janko commented Oct 23, 2017

This is actually not necessary, and isn't applicable (e.g. when using deflating Request#body will not be a Request::Body instance). I think a different approach would be better.

@janko janko closed this Oct 23, 2017
@janko janko deleted the make-request-body-source-accessible branch October 23, 2017 20:01
@janko janko restored the make-request-body-source-accessible branch November 11, 2017 00:48
@janko janko reopened this Nov 11, 2017
@janko
Copy link
Member Author

janko commented Nov 11, 2017

This is now ready for review.

I modified HTTP::Request to create a deflated body only when it's about to stream. The reason for that change is that httplog is currently retrieving the HTTP::Request#body, and I wanted it to be able to call #source to retrieve the original body object, but that wouldn't currently work with :auto_deflate, because HTTP::Request#body wouldn't return a HTTP::Request::Body object but rather the DeflatedBody wrapper.

I think this change is beneficial in general in terms of consistency, because with this PR HTTP::Request#body will always return a HTTP::Request::Body object, even when :auto_deflate is turned on.

This makes it easier for 3rd-party libraries to inspect and log the
request body, because they can rely on HTTP::Request#body always
returning a HTTP::Request::Body object, instead of a DeflatedBody object
when :auto_deflate is enabled.

We also define HTTP::Request::Body#== for easier testing.
@janko janko force-pushed the make-request-body-source-accessible branch from b2e1460 to 9a28682 Compare November 11, 2017 01:23
@tarcieri
Copy link
Member

Looks good to me. Any thoughts @ixti?

@ixti
Copy link
Member

ixti commented Nov 13, 2017

LGTM as well! Thanks!

@ixti ixti merged commit 70658da into httprb:master Nov 13, 2017
@janko janko deleted the make-request-body-source-accessible branch November 13, 2017 00:40
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.

3 participants