Struct tiny_http::Response
[−]
[src]
pub struct Response<R> where R: Read { /* fields omitted */ }
Object representing an HTTP response whose purpose is to be given to a Request
.
Some headers cannot be changed. Trying to define the value of one of these will have no effect:
Accept-Ranges
Connection
Content-Range
Trailer
Transfer-Encoding
Upgrade
Some headers have special behaviors:
Content-Encoding
: If you define this header, the library will assume that the data from theRead
object has the specified encoding and will just pass-through.Content-Length
: The length of the data should be set manually using theReponse
object's API. Attempting to set the value of this header will be equivalent to modifying the size of the data but the header itself may not be present in the final result.
Methods
impl<R> Response<R> where R: Read
[src]
fn new(status_code: StatusCode, headers: Vec<Header>, data: R, data_length: Option<usize>, additional_headers: Option<Receiver<Header>>) -> Response<R>
Creates a new Response object.
The additional_headers
argument is a receiver that
may provide headers even after the response has been sent.
All the other arguments are straight-forward.
fn add_header<H>(&mut self, header: H) where H: Into<Header>
Adds a header to the list. Does all the checks.
fn with_header<H>(self, header: H) -> Response<R> where H: Into<Header>
Returns the same request, but with an additional header.
Some headers cannot be modified and some other have a special behavior. See the documentation above.
fn with_status_code<S>(self, code: S) -> Response<R> where S: Into<StatusCode>
Returns the same request, but with a different status code.
fn with_data<S>(self, reader: S, data_length: Option<usize>) -> Response<S> where S: Read
Returns the same request, but with different data.
fn raw_print<W: Write>(self, writer: W, http_version: HTTPVersion, request_headers: &[Header], do_not_send_body: bool, upgrade: Option<&str>) -> IoResult<()>
Prints the HTTP response to a writer.
This function is the one used to send the response to the client's socket. Therefore you shouldn't expect anything pretty-printed or even readable.
The HTTP version and headers passed as arguments are used to decide which features (most notably, encoding) to use.
Note: does not flush the writer.
impl<R> Response<R> where R: Read + Send + 'static
[src]
fn boxed(self) -> ResponseBox
Turns this response into a Response<Box<Read + Send>>
.
impl Response<File>
[src]
fn from_file(file: File) -> Response<File>
Builds a new Response
from a File
.
The Content-Type
will not be automatically detected,
you must set it yourself.
impl Response<Cursor<Vec<u8>>>
[src]
fn from_data<D>(data: D) -> Response<Cursor<Vec<u8>>> where D: Into<Vec<u8>>
fn from_string<S>(data: S) -> Response<Cursor<Vec<u8>>> where S: Into<String>
impl Response<Empty>
[src]
fn empty<S>(status_code: S) -> Response<Empty> where S: Into<StatusCode>
Builds an empty Response
with the given status code.
fn new_empty(status_code: StatusCode) -> Response<Empty>
DEPRECATED. Use empty
instead.