Skip to main content

WebSocketUpgradeError

Struct WebSocketUpgradeError 

Source
pub struct WebSocketUpgradeError {
    pub kind: ErrorKind,
    /* private fields */
}
Available on crate feature websockets only.
Expand description

An attempted upgrade to a WebSocket failed.

You can transform this back into the Conn with From::from/Into::into, if you need to look at the server response.

Fields§

§kind: ErrorKind

The kind of error that occurred

Methods from Deref<Target = Conn>§

Source

pub fn transport(&self) -> Option<&dyn Transport>

Borrows the transport for this conn

This should only be used to call your own custom methods on the transport that do not read or write any data. Calling any method that reads from or writes to the transport will disrupt the HTTP protocol.

Source

pub fn transport_mut(&mut self) -> Option<&mut dyn Transport>

Mutably borrow the transport for this conn

This should only be used to call your own custom methods on the transport that do not read or write any data. Calling any method that reads from or writes to the transport will disrupt the HTTP protocol.

Source

pub fn url(&self) -> &Url

Borrows the url for this conn.

use trillium_client::{Client, Method};
use trillium_testing::client_config;

let client = Client::from(client_config());

let conn = client.get("http://localhost:9080");

let url = conn.url(); //<-

assert_eq!(url.host_str().unwrap(), "localhost");
Source

pub fn url_mut(&mut self) -> &mut Url

Mutably borrow the url for this conn.

use trillium_client::{Client, Method};
use trillium_testing::client_config;

let client = Client::from(client_config());

let conn = client.get("http://localhost:9080");

let url = conn.url(); //<-

assert_eq!(url.host_str().unwrap(), "localhost");
Source

pub fn set_url(&mut self, url: Url) -> &mut Self

Sets the url for this conn., returning &mut Self for chaining

use trillium_client::{Client, Method};
use trillium_testing::client_config;

let client = Client::from(client_config());

let conn = client.get("http://localhost:9080");

let url = conn.url(); //<-

assert_eq!(url.host_str().unwrap(), "localhost");
Source

pub fn method(&self) -> Method

Returns a copy of the method for this conn.

use trillium_client::{Client, Method};
use trillium_testing::client_config;

let client = Client::from(client_config());
let conn = client.get("http://localhost:9080");

let method = conn.method(); //<-

assert_eq!(method, Method::Get);
Source

pub fn set_method(&mut self, method: Method) -> &mut Self

Sets the method for this conn., returning &mut Self for chaining

use trillium_client::{Client, Method};
use trillium_testing::client_config;

let client = Client::from(client_config());
let conn = client.get("http://localhost:9080");

let method = conn.method(); //<-

assert_eq!(method, Method::Get);
Source

pub fn request_headers(&self) -> &Headers

Borrows the request headers

Source

pub fn request_headers_mut(&mut self) -> &mut Headers

Mutably borrow the request headers

Source

pub fn response_headers(&self) -> &Headers

Borrows the response headers

Source

pub fn response_headers_mut(&mut self) -> &mut Headers

Mutably borrow the response headers

Source

pub fn status(&self) -> Option<Status>

Returns a copy of the status code for this conn.

If the conn has not yet been sent, this will be None.

use trillium_client::{Client, Status};
use trillium_testing::{client_config, with_server};

async fn handler(conn: trillium::Conn) -> trillium::Conn {
conn.with_status(418)
}

with_server(handler, |url| async move {
let client = Client::new(client_config());
let conn = client.get(url).await?;
assert_eq!(Status::ImATeapot, conn.status().unwrap());
Ok(())
});
Source

pub fn set_request_body(&mut self, body: impl Into<Body>) -> &mut Self

Sets the request body, returning &mut Self for chaining

env_logger::init();
use trillium_client::Client;
use trillium_testing::{client_config, with_server};

let handler = |mut conn: trillium::Conn| async move {
let body = conn.request_body_string().await.unwrap();
conn.ok(format!("request body was: {}", body))
};

with_server(handler, |url| async move {
let client = Client::from(client_config());
let mut conn = client
.post(url)
.with_body("body") //<-
.await?;

assert_eq!(
conn.response_body().read_string().await?,
"request body was: body"
);
Ok(())
});
Source

pub fn take_request_body(&mut self) -> Option<Body>

Takes the request body, leaving a None in its place

env_logger::init();
use trillium_client::Client;
use trillium_testing::{client_config, with_server};

let handler = |mut conn: trillium::Conn| async move {
let body = conn.request_body_string().await.unwrap();
conn.ok(format!("request body was: {}", body))
};

with_server(handler, |url| async move {
let client = Client::from(client_config());
let mut conn = client
.post(url)
.with_body("body") //<-
.await?;

assert_eq!(
conn.response_body().read_string().await?,
"request body was: body"
);
Ok(())
});
Source

pub fn timeout(&self) -> Option<Duration>

Returns a copy of the timeout for this conn

this can also be set on the client with Client::set_timeout and Client::with_timeout

Source

pub fn timeout_mut(&mut self) -> Option<&mut Duration>

Mutably borrow the timeout for this conn

this can also be set on the client with Client::set_timeout and Client::with_timeout

Source

pub fn set_timeout(&mut self, timeout: Duration) -> &mut Self

Sets the timeout for this conn, returning &mut Self for chaining

this can also be set on the client with Client::set_timeout and Client::with_timeout

Source

pub fn take_timeout(&mut self) -> Option<Duration>

Takes the timeout for this conn, leaving a None in its place

this can also be set on the client with Client::set_timeout and Client::with_timeout

Source

pub fn http_version(&self) -> Version

Returns a copy of the http version for this conn

prior to conn execution, this reflects the intended http version that will be sent, and after execution this reflects the server-indicated http version

Source

pub fn set_http_version(&mut self, http_version: Version) -> &mut Self

Sets the http version for this conn, returning &mut Self for chaining

prior to conn execution, this reflects the intended http version that will be sent, and after execution this reflects the server-indicated http version

Source

pub fn authority(&self) -> Option<&str>

Borrows the :authority pseudo-header, populated during h3 header finalization

Source

pub fn scheme(&self) -> Option<&str>

Borrows the :scheme pseudo-header, populated during h3 header finalization

Source

pub fn path(&self) -> Option<&str>

Borrows the :path pseudo-header, populated during h3 header finalization

Source

pub fn request_target(&self) -> Option<&str>

Borrows an explicit request target override, used only for OPTIONS * and CONNECT host:port

When set and the method is OPTIONS or CONNECT, this value is used as the HTTP request target instead of deriving it from the url. For all other methods, this field is ignored.

Source

pub fn set_request_target( &mut self, request_target: impl Into<Cow<'static, str>>, ) -> &mut Self

Sets an explicit request target override, used only for OPTIONS * and CONNECT host:port, returning &mut Self for chaining

When set and the method is OPTIONS or CONNECT, this value is used as the HTTP request target instead of deriving it from the url. For all other methods, this field is ignored.

Source

pub fn request_trailers(&self) -> Option<&Headers>

Borrows trailers sent with the request body, populated after the body has been fully sent.

Only present when the request body was constructed with Body::new_with_trailers and the body has been fully sent. For H3, this is populated after send_h3_request; for H1, after send_body with a chunked body.

Source

pub fn response_trailers(&self) -> Option<&Headers>

Borrows trailers received with the response body, populated after the response body has been fully read.

For H3, these are decoded from the trailing HEADERS frame. For H1, from chunked trailers (once H1 trailer receive is implemented).

Source

pub fn response_body(&mut self) -> ResponseBody<'_>

returns a ResponseBody that borrows the connection inside this conn.

use trillium_client::Client;
use trillium_testing::{client_config, with_server};

let handler = |mut conn: trillium::Conn| async move { conn.ok("hello from trillium") };

with_server(handler, |url| async move {
    let client = Client::from(client_config());
    let mut conn = client.get(url).await?;

    let response_body = conn.response_body(); //<-

    assert_eq!(19, response_body.content_length().unwrap());
    let string = response_body.read_string().await?;
    assert_eq!("hello from trillium", string);
    Ok(())
});
Source

pub async fn response_json<T>(&mut self) -> Result<T, ClientSerdeError>

Available on crate feature sonic-rs only.

Attempt to deserialize the response body. Note that this consumes the body content.

Source

pub fn peer_addr(&self) -> Option<SocketAddr>

attempts to retrieve the connected peer address

Source

pub fn insert_state<T: Send + Sync + 'static>(&mut self, state: T) -> Option<T>

add state to the client conn, returning any previously set state of this type

Source

pub fn state<T: Send + Sync + 'static>(&self) -> Option<&T>

borrow state

Source

pub fn state_mut<T: Send + Sync + 'static>(&mut self) -> Option<&mut T>

borrow state mutably

Source

pub fn take_state<T: Send + Sync + 'static>(&mut self) -> Option<T>

take state

Trait Implementations§

Source§

impl Debug for WebSocketUpgradeError

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Deref for WebSocketUpgradeError

Source§

type Target = Conn

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for WebSocketUpgradeError

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl Display for WebSocketUpgradeError

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Error for WebSocketUpgradeError

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<WebSocketUpgradeError> for Conn

Source§

fn from(value: WebSocketUpgradeError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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, U> Into<U> for T
where 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.
Source§

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

Source§

fn vzip(self) -> V