Struct rocket::local::asynchronous::LocalResponse[][src]

pub struct LocalResponse<'c> { /* fields omitted */ }
Expand description

An async response from a dispatched LocalRequest.

This LocalResponse implements tokio::io::AsyncRead. As such, if into_string() and into_bytes() do not suffice, the response’s body can be read directly:

use std::io;

use rocket::local::asynchronous::Client;
use rocket::tokio::io::AsyncReadExt;
use rocket::http::Status;

#[get("/")]
fn hello_world() -> &'static str {
    "Hello, world!"
}

#[launch]
fn rocket() -> _ {
    rocket::build().mount("/", routes![hello_world])
}

// Dispatch a `GET /` request.
let client = Client::tracked(rocket()).await.expect("valid rocket");
let mut response = client.get("/").dispatch().await;

// Check metadata validity.
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.body().preset_size(), Some(13));

// Read 10 bytes of the body. Note: in reality, we'd use `into_string()`.
let mut buffer = [0; 10];
response.read(&mut buffer).await?;
assert_eq!(buffer, "Hello, wor".as_bytes());

For more, see the top-level documentation.

Implementations

impl LocalResponse<'_>[src]

pub fn status(&self) -> Status[src]

Returns the HTTP status of self.

Example

use rocket::local::asynchronous::LocalResponse;

let response: LocalResponse = response;
let status = response.status();

pub fn content_type(&self) -> Option<ContentType>[src]

Returns the Content-Type, if a valid one is set, of self.

Example

use rocket::local::asynchronous::LocalResponse;

let response: LocalResponse = response;
let content_type = response.content_type();

pub fn headers(&self) -> &HeaderMap<'_>[src]

Returns the HTTP headers of self.

Example

use rocket::local::asynchronous::LocalResponse;

let response: LocalResponse = response;
let headers = response.headers();

pub fn cookies(&self) -> &CookieJar<'_>[src]

Return a cookie jar containing the HTTP cookies in the response.

Example

use rocket::local::asynchronous::LocalResponse;

let response: LocalResponse = response;
let string = response.cookies();

pub fn body(&self) -> &Body<'_>[src]

Returns the response body, if there is one, of self.

Example

use rocket::local::asynchronous::LocalResponse;

let response: LocalResponse = response;
let body = response.body();

pub async fn into_string(self) -> Option<String>[src]

Consumes self and reads the entirety of its body into a string.

If reading fails, the body contains invalid UTF-8 characters, or the body is unset in the response, returns None. Otherwise, returns Some. The string may be empty if the body is empty.

Example

use rocket::local::asynchronous::LocalResponse;

let response: LocalResponse = response;
let string = response.into_string();

pub async fn into_bytes(self) -> Option<Vec<u8>>[src]

Consumes self and reads the entirety of its body into a Vec of bytes.

If reading fails or the body is unset in the response, returns None. Otherwise, returns Some. The returned vector may be empty if the body is empty.

Example

use rocket::local::asynchronous::LocalResponse;

let response: LocalResponse = response;
let bytes = response.into_bytes();

pub async fn into_json<T>(self) -> Option<T> where
    T: Send + DeserializeOwned + 'static, 
[src]

This is supported on crate feature json only.

Consumes self and deserializes its body as JSON without buffering in memory.

If deserialization fails or the body is unset in the response, returns None. Otherwise, returns Some.

Example

use rocket::local::asynchronous::LocalResponse;
use rocket::serde::Deserialize;

#[derive(Deserialize)]
struct Task {
    id: usize,
    complete: bool,
    text: String,
}

let response: LocalResponse = response;
let task = response.into_json::<Task>();

pub async fn into_msgpack<T>(self) -> Option<T> where
    T: Send + DeserializeOwned + 'static, 
[src]

This is supported on crate feature msgpack only.

Consumes self and deserializes its body as MessagePack without buffering in memory.

If deserialization fails or the body is unset in the response, returns None. Otherwise, returns Some.

Example

use rocket::local::asynchronous::LocalResponse;
use rocket::serde::Deserialize;

#[derive(Deserialize)]
struct Task {
    id: usize,
    complete: bool,
    text: String,
}

let response: LocalResponse = response;
let task = response.into_msgpack::<Task>();

Trait Implementations

impl AsyncRead for LocalResponse<'_>[src]

fn poll_read(
    self: Pin<&mut Self>,
    cx: &mut Context<'_>,
    buf: &mut ReadBuf<'_>
) -> Poll<Result<()>>
[src]

Attempts to read from the AsyncRead into buf. Read more

impl Debug for LocalResponse<'_>[src]

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

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl<'c> !RefUnwindSafe for LocalResponse<'c>

impl<'c> Send for LocalResponse<'c>

impl<'c> !Sync for LocalResponse<'c>

impl<'c> Unpin for LocalResponse<'c>

impl<'c> !UnwindSafe for LocalResponse<'c>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<R> AsyncReadExt for R where
    R: AsyncRead + ?Sized
[src]

fn chain<R>(self, next: R) -> Chain<Self, R> where
    R: AsyncRead
[src]

Creates a new AsyncRead instance that chains this stream with next. Read more

fn read(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self> where
    Self: Unpin
[src]

Pulls some bytes from this source into the specified buffer, returning how many bytes were read. Read more

fn read_buf<B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B> where
    Self: Unpin,
    B: BufMut
[src]

Pulls some bytes from this source into the specified buffer, advancing the buffer’s internal cursor. Read more

fn read_exact(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self> where
    Self: Unpin
[src]

Reads the exact number of bytes required to fill buf. Read more

fn read_u8(&'a mut self) -> ReadU8<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 8 bit integer from the underlying reader. Read more

fn read_i8(&'a mut self) -> ReadI8<&'a mut Self> where
    Self: Unpin
[src]

Reads a signed 8 bit integer from the underlying reader. Read more

fn read_u16(&'a mut self) -> ReadU16<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 16-bit integer in big-endian order from the underlying reader. Read more

fn read_i16(&'a mut self) -> ReadI16<&'a mut Self> where
    Self: Unpin
[src]

Reads a signed 16-bit integer in big-endian order from the underlying reader. Read more

fn read_u32(&'a mut self) -> ReadU32<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 32-bit integer in big-endian order from the underlying reader. Read more

fn read_i32(&'a mut self) -> ReadI32<&'a mut Self> where
    Self: Unpin
[src]

Reads a signed 32-bit integer in big-endian order from the underlying reader. Read more

fn read_u64(&'a mut self) -> ReadU64<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 64-bit integer in big-endian order from the underlying reader. Read more

fn read_i64(&'a mut self) -> ReadI64<&'a mut Self> where
    Self: Unpin
[src]

Reads an signed 64-bit integer in big-endian order from the underlying reader. Read more

fn read_u128(&'a mut self) -> ReadU128<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 128-bit integer in big-endian order from the underlying reader. Read more

fn read_i128(&'a mut self) -> ReadI128<&'a mut Self> where
    Self: Unpin
[src]

Reads an signed 128-bit integer in big-endian order from the underlying reader. Read more

fn read_u16_le(&'a mut self) -> ReadU16Le<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 16-bit integer in little-endian order from the underlying reader. Read more

fn read_i16_le(&'a mut self) -> ReadI16Le<&'a mut Self> where
    Self: Unpin
[src]

Reads a signed 16-bit integer in little-endian order from the underlying reader. Read more

fn read_u32_le(&'a mut self) -> ReadU32Le<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 32-bit integer in little-endian order from the underlying reader. Read more

fn read_i32_le(&'a mut self) -> ReadI32Le<&'a mut Self> where
    Self: Unpin
[src]

Reads a signed 32-bit integer in little-endian order from the underlying reader. Read more

fn read_u64_le(&'a mut self) -> ReadU64Le<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 64-bit integer in little-endian order from the underlying reader. Read more

fn read_i64_le(&'a mut self) -> ReadI64Le<&'a mut Self> where
    Self: Unpin
[src]

Reads an signed 64-bit integer in little-endian order from the underlying reader. Read more

fn read_u128_le(&'a mut self) -> ReadU128Le<&'a mut Self> where
    Self: Unpin
[src]

Reads an unsigned 128-bit integer in little-endian order from the underlying reader. Read more

fn read_i128_le(&'a mut self) -> ReadI128Le<&'a mut Self> where
    Self: Unpin
[src]

Reads an signed 128-bit integer in little-endian order from the underlying reader. Read more

fn read_to_end(
    &'a mut self,
    buf: &'a mut Vec<u8, Global>
) -> ReadToEnd<'a, Self> where
    Self: Unpin
[src]

Reads all bytes until EOF in this source, placing them into buf. Read more

fn read_to_string(&'a mut self, dst: &'a mut String) -> ReadToString<'a, Self> where
    Self: Unpin
[src]

Reads all bytes until EOF in this source, appending them to buf. Read more

fn take(self, limit: u64) -> Take<Self>[src]

Creates an adaptor which reads at most limit bytes from it. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[src]

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

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

fn in_current_span(self) -> Instrumented<Self>[src]

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

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> IntoCollection<T> for T

pub fn into_collection<A>(self) -> SmallVec<A> where
    A: Array<Item = T>, 

Converts self into a collection.

pub fn mapped<U, F, A>(self, f: F) -> SmallVec<A> where
    F: FnMut(T) -> U,
    A: Array<Item = U>, 

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.

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

pub fn vzip(self) -> V