Module body_image::client[][src]

HTTP client integration and utilities.

This optional module (via non-default client feature) provides additional integration with the futures, http, hyper 0.12.x., and tokio crates.

  • Trait RequestRecordable extends http::request::Builder for recording a RequestRecord, which can then be passed to request_dialog or fetch.

  • The fetch function runs a RequestRecord and returns a completed Dialog using a single-use client and runtime for request_dialog.

  • The request_dialog function returns a Future<Item=Dialog>, given a suitable hyper::Client reference and RequestRecord. This function is thus more composable for complete tokio applications.

  • AsyncBodySink adapts a BodySink for fully asynchronous receipt of a hyper::Body stream.

  • The decode_res_body and associated functions will decompress any supported Transfer/Content-Encoding of the response body and update the Dialog accordingly.

With the release of hyper 0.12 and tokio reform, the intent is to evolve this module into a more general purpose middleware type facility, including:

  • More flexible integration of the recorded Dialog into more complete tokio applications (partially complete).

  • Asynchronous I/O adaptions for file-based bodies where appropriate and beneficial (partially complete, see AsyncBodySink).

  • Symmetric support for BodyImage/BodySink request/response bodies.

Structs

AsyncBodySink

Adaptor for BodySink implementing the futures::Sink trait. This allows a hyper::Body stream to be forwarded (e.g. via futures::Stream::forward) to a BodySink, in a fully asynchronous fashion.

RequestRecord

An http::Request and recording. Note that other important getter methods for RequestRecord are found in trait implementation RequestRecorded.

Statics

ACCEPT_ENCODINGS

Appropriate value for the HTTP accept-encoding request header, including (br)otli when the brotli feature is configured.

BROWSE_ACCEPT

A browser-like HTTP accept request header value, with preference for hypertext.

Traits

RequestRecordable

Extension trait for http::request::Builder, to enable recording key portions of the request for the final Dialog.

Functions

decode_res_body

Decode the response body of the provided Dialog compressed with any supported Encoding, updated the dialog accordingly. The provided Tunables controls decompression buffer sizes and if the final BodyImage will be in Ram or FsRead. Returns Ok(true) if the response body was decoded, Ok(false) if no or unsupported encoding, or an error on failure.

decompress

Decompress the provided body of any supported compression Encoding, using Tunables for buffering and the final returned BodyImage. If the encoding is not supported (e.g. Chunked or Brotli, without the feature enabled), returns None.

fetch

Run an HTTP request to completion, returning the full Dialog. This function constructs a default tokio Runtime, HttpsConnector, and hyper Client in a simplistic form internally, waiting with timeout, and dropping these on completion.

find_chunked

Return true if the chunked Transfer-Encoding can be found in the headers.

find_encodings

Return a list of supported encodings from the headers Transfer-Encoding and Content-Encoding. The Chunked encoding will be the first value if found. At most one compression encoding will be the last value if found.

request_dialog

Given a suitable Client and RequestRecord, return a Future<Item=Dialog>. The provided Tunables governs timeout intervals (initial response and complete body) and if the response BodyImage will be in Ram or FsRead.

user_agent

Return a generic HTTP user-agent header value for the crate, with version