View Source erqwest_async (erqwest v0.2.5)

Link to this section Summary

Functions

Cancel an asynchronous request at any stage. A reply will always still be sent, either {error, #{code := cancelled}}, another error or a reply depending on the state of the connection. Has no effect if the request has already completed or was already cancelled.
Complete sending the request body. The message flow continues as described for req/4, ie. the next message will be reply or error.
Read a chunk of the response body, waiting for at most period ms or until at least length bytes have been read. Note that more than length bytes can be returned. length defaults to 8 MB if omitted, and period to infinity. Note that more than length bytes can be returned. Replies with {erqwest_response, Ref, chunk, Data}, {erqwest_response, Ref, fin, Data} or {erqwest_response, Ref, error, erqwest:err()}`. A `fin or error response will be the final message.

Make an asynchronous request.

Asynchronously stream a chunk of the request body. Replies with {erqwest_response, Ref, next} when the connection is ready to receive more data. Replies with {erqwest_response, Ref, error, erqwest:err()} if something goes wrong, or {erqwest_response, Ref, reply, erqwest:resp()} if the server has already decided to reply. Call finish_send/1 when the request body is complete.

Link to this section Types

Specs

handle()

Link to this section Functions

Specs

cancel(handle()) -> ok.
Cancel an asynchronous request at any stage. A reply will always still be sent, either {error, #{code := cancelled}}, another error or a reply depending on the state of the connection. Has no effect if the request has already completed or was already cancelled.

Specs

finish_send(handle()) -> ok.
Complete sending the request body. The message flow continues as described for req/4, ie. the next message will be reply or error.

Specs

read(handle(), erqwest:read_opts()) -> ok.
Read a chunk of the response body, waiting for at most period ms or until at least length bytes have been read. Note that more than length bytes can be returned. length defaults to 8 MB if omitted, and period to infinity. Note that more than length bytes can be returned. Replies with {erqwest_response, Ref, chunk, Data}, {erqwest_response, Ref, fin, Data} or {erqwest_response, Ref, error, erqwest:err()}`. A `fin or error response will be the final message.
Link to this function

req(Client, Pid, Ref, Req)

View Source

Specs

req(erqwest:client() | atom(), pid(), any(), erqwest:req_opts()) -> handle().

Make an asynchronous request.

A Response will be sent to Pid as follows:

* If body is stream, and the request was successfully initated, {erqwest_response, Ref, next}. See send/2 and finish_send/1 for how to respond. Alternatively {erqwest_response, Ref, error, erqwest:err()}.

* If body is omitted or is of type iodata(), {erqwest_response, Ref, reply, erqwest:resp()} or {erqwest_response, Ref, error, erqwest:err()}.

* If response_body is stream, erqwest:resp() will contain a handle which should be passed to read/2. Alternatively, call cancel/1 if you do not intend to consume the body.

An error response is _always_ the final response. If streaming is not used, a single reply is guaranteed.

Fails with reason badarg if any argument is invalid or if the client has already been closed.

Specs

send(handle(), iodata()) -> ok.
Asynchronously stream a chunk of the request body. Replies with {erqwest_response, Ref, next} when the connection is ready to receive more data. Replies with {erqwest_response, Ref, error, erqwest:err()} if something goes wrong, or {erqwest_response, Ref, reply, erqwest:resp()} if the server has already decided to reply. Call finish_send/1 when the request body is complete.