pub struct Response<T> { /* private fields */ }
Expand description

Response wrapper containing helper functions over the HTTP client’s response.

This exists so that it can be determined whether to deserialize the body. This is useful when you don’t need the body and therefore don’t want to spend the time to deserialize it.

Examples

use std::env;
use twilight_http::Client;

let client = Client::new(env::var("DISCORD_TOKEN")?);
let response = client.user(user_id).await?;
println!("status code: {}", response.status());

let user = response.model().await?;
println!("username: {}#{:04}", user.name, user.discriminator);

Implementations§

source§

impl<T> Response<T>

source

pub fn headers(&self) -> HeaderIter<'_>

Iterator of the response headers.

source

pub fn status(&self) -> StatusCode

Status code of the response.

source

pub fn bytes(self) -> BytesFuture

Consume the response and accumulate the chunked body into bytes.

For a textual representation of the response body text should be preferred.

Examples

Count the number of bytes in a response body:

use std::env;
use twilight_http::Client;

let client = Client::new(env::var("DISCORD_TOKEN")?);
let response = client.user(user_id).await?;
let bytes = response.bytes().await?;

println!("size of body: {}", bytes.len());
Errors

Returns a DeserializeBodyErrorType::Chunking error type if the response body could not be entirely read.

source

pub fn text(self) -> TextFuture

Consume the response and accumulate the body into a string.

For the raw bytes of the response body bytes should be preferred.

Examples

Print the textual response from getting the current user:

use std::env;
use twilight_http::Client;

let client = Client::new(env::var("DISCORD_TOKEN")?);
let response = client.current_user().await?;
let text = response.text().await?;

println!("body: {text}");
Errors

Returns a DeserializeBodyErrorType::BodyNotUtf8 error type if the response body is not UTF-8 valid.

Returns a DeserializeBodyErrorType::Chunking error type if the response body could not be entirely read.

source§

impl<T: DeserializeOwned> Response<T>

source

pub fn model(self) -> ModelFuture<T>

Consume the response, chunking the body and then deserializing it into the request’s matching model.

Errors

Returns a DeserializeBodyErrorType::Chunking error type if the response body could not be entirely read.

Returns a DeserializeBodyErrorType::Deserializing error type if the response body could not be deserialized into the target model.

source§

impl<T: DeserializeOwned> Response<ListBody<T>>

source

pub fn model(self) -> ModelFuture<Vec<T>>

Consume the response, chunking the body and then deserializing it into a list of something.

This is an alias for models.

Errors

Returns a DeserializeBodyErrorType::Chunking error type if the response body could not be entirely read.

Returns a DeserializeBodyErrorType::Deserializing error type if the response body could not be deserialized into a list of something.

source

pub fn models(self) -> ModelFuture<Vec<T>>

Consume the response, chunking the body and then deserializing it into a list of something.

Errors

Returns a DeserializeBodyErrorType::Chunking error type if the response body could not be entirely read.

Returns a DeserializeBodyErrorType::Deserializing error type if the response body could not be deserialized into a list of something.

Trait Implementations§

source§

impl<T: Debug> Debug for Response<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for Response<T>

§

impl<T> Send for Response<T>where T: Send,

§

impl<T> Sync for Response<T>where T: Sync,

§

impl<T> Unpin for Response<T>where T: Unpin,

§

impl<T> !UnwindSafe for Response<T>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more