[−][src]Struct fastly::handle::ResponseHandle
A low-level interface to HTTP responses.
For most applications, you should use Response
instead of this interface. See the top-level
handle
documentation for more details.
Sending to the client
Each execution of a Compute@Edge program may send a single response back to the client:
If no response is explicitly sent by the program, a default 200 OK
response is sent.
Creation and conversion
Response handles can be created programmatically using ResponseHandle::new()
Response handles are also returned from backend requests:
Implementations
impl ResponseHandle
[src]
pub const INVALID: Self
[src]
An invalid handle.
This is primarily useful to represent uninitialized values when using the interfaces in
fastly_sys
.
pub fn is_valid(&self) -> bool
[src]
Returns true
if the response handle is valid.
pub fn is_invalid(&self) -> bool
[src]
Returns true
if the response handle is invalid.
pub fn new() -> Self
[src]
Acquire a new response handle.
By default, the response will have a status code of 200 OK
and empty headers.
pub fn get_header_names<'a>(
&'a self,
buf_size: usize
) -> impl Iterator<Item = Result<HeaderName, BufferSizeError>> + 'a
[src]
&'a self,
buf_size: usize
) -> impl Iterator<Item = Result<HeaderName, BufferSizeError>> + 'a
Read the response's header names via a buffer of the provided size.
If there is a header name that is longer than buf_size
, this will return a
BufferSizeError
; you can retry with a larger buffer size if necessary.
pub fn get_header_values<'a>(
&'a self,
name: &'a HeaderName,
max_len: usize
) -> impl Iterator<Item = Result<HeaderValue, BufferSizeError>> + 'a
[src]
&'a self,
name: &'a HeaderName,
max_len: usize
) -> impl Iterator<Item = Result<HeaderValue, BufferSizeError>> + 'a
Get a response's header values given a header name, via a buffer of the provided size.
If there is a header value that is longer than the buffer, this will return a
BufferSizeError
; you can retry with a larger buffer size if necessary.
Examples
Collect all the header values into a Vec
:
let name = HeaderName::from_static("My-App-Header"); let buf_size = 128; let header_values: Vec<HeaderValue> = response .get_header_values(&name, buf_size) .collect::<Result<Vec<HeaderValue>, _>>()?;
To try again with a larger buffer if the first call fails, you can use
unwrap_or_else()
:
let name = HeaderName::from_static("My-App-Header"); let buf_size = 128; // Collect header values into a `Vec<HeaderValue>`, with a buffer size of `128`. // If the first call fails, print our error and then try to collect header values // again. The second call will use a larger buffer size of `1024`. let header_values: Vec<HeaderValue> = response .get_header_values(&name, buf_size) .collect::<Result<_, _>>() .unwrap_or_else(|err: BufferSizeError| { eprintln!("buffer size error: {}", err); let larger_buf_size = 1024; response .get_header_values(&name, larger_buf_size) .collect::<Result<_, _>>() .unwrap() });
pub fn set_header_values<'a, I>(&mut self, name: &HeaderName, values: I) where
I: IntoIterator<Item = &'a HeaderValue>,
[src]
I: IntoIterator<Item = &'a HeaderValue>,
Set the values for the given header name, replacing any headers that previously existed for that name.
pub fn get_header_value(
&self,
name: &HeaderName,
max_len: usize
) -> Result<Option<HeaderValue>, BufferSizeError>
[src]
&self,
name: &HeaderName,
max_len: usize
) -> Result<Option<HeaderValue>, BufferSizeError>
Get the value of a header, or None
if the header is not present.
If there are multiple values for the header, only one is returned. See
get_header_values()
if you need to get all of the values.
If the value is longer than max_len
, this will return a BufferSizeError
; you can retry
with a larger buffer size if necessary.
pub fn insert_header(&mut self, name: &HeaderName, value: &HeaderValue)
[src]
Set a response header to the given value, discarding any previous values for the given header name.
pub fn append_header(&mut self, name: &HeaderName, value: &HeaderValue)
[src]
Add a response header with given value.
Unlike insert_header()
, this does not discard existing values
for the same header name.
pub fn remove_header(&mut self, name: &HeaderName) -> bool
[src]
Remove all response headers of the given name, and return whether any headers were removed.
pub fn set_status(&mut self, status: StatusCode)
[src]
Set the HTTP status code of this response.
pub fn get_status(&self) -> StatusCode
[src]
Get the HTTP status code of this response.
pub fn get_version(&self) -> Version
[src]
Get the HTTP version of this response.
pub fn set_version(&mut self, v: Version)
[src]
Set the HTTP version of this response.
pub fn send_to_client(self, body: BodyHandle)
[src]
Immediately begin sending this response downstream to the client with the given body.
pub fn stream_to_client(self, body: BodyHandle) -> StreamingBodyHandleⓘNotable traits for StreamingBodyHandle
impl Write for StreamingBodyHandle
[src]
Notable traits for StreamingBodyHandle
impl Write for StreamingBodyHandle
Immediately begin sending this response downstream to the client, and return a
StreamingBodyHandle
that can accept further data to send.
Trait Implementations
impl Debug for ResponseHandle
[src]
impl Eq for ResponseHandle
[src]
impl Hash for ResponseHandle
[src]
pub fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl PartialEq<ResponseHandle> for ResponseHandle
[src]
pub fn eq(&self, other: &ResponseHandle) -> bool
[src]
pub fn ne(&self, other: &ResponseHandle) -> bool
[src]
impl StructuralEq for ResponseHandle
[src]
impl StructuralPartialEq for ResponseHandle
[src]
Auto Trait Implementations
impl RefUnwindSafe for ResponseHandle
[src]
impl Send for ResponseHandle
[src]
impl Sync for ResponseHandle
[src]
impl Unpin for ResponseHandle
[src]
impl UnwindSafe for ResponseHandle
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
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]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,