pub struct Responder<'p, P>where
P: Pack,{ /* private fields */ }
Expand description
Responder service, providing http response for requests, looking for File in Pack.
There are two main methods for this type:
- Self::respond - generates http response for successful requests and lets user handle errors manually.
- Self::respond_flatten - like above, but generates default responses also for errors.
§Examples
ⓘ
let pack_archived = web_static_pack::loader::load(...).unwrap();
let responder = web_static_pack::responder::Responder::new(pack_archived);
assert_eq!(
responder.respond_flatten(
&Method::GET,
"/present",
&HeaderMap::default(),
).status(),
StatusCode::OK
);
assert_eq!(
responder.respond_flatten(
&Method::GET,
"/missing",
&HeaderMap::default(),
).status(),
StatusCode::NOT_FOUND
);
assert_eq!(
responder.respond(
&Method::GET,
"/missing",
&HeaderMap::default(),
),
Err(ResponderRespondError::PackPathNotFound)
);
For full example, including making a hyper server, see crate level documentation.
Implementations§
Source§impl<'p, P> Responder<'p, P>where
P: Pack,
impl<'p, P> Responder<'p, P>where
P: Pack,
Sourcepub fn respond(
&self,
method: &Method,
path: &str,
headers: &HeaderMap,
) -> Result<Response<'p>, ResponderRespondError>
pub fn respond( &self, method: &Method, path: &str, headers: &HeaderMap, ) -> Result<Response<'p>, ResponderRespondError>
Returns http response for given request parts or rust error to be handled by user.
Inside this method:
- Checks http method (accepts GET or HEAD).
- Looks for file inside
pack
passed in constructor. - Checks for
ETag
match (and returns 304). - Negotiates content encoding.
- Builds final http response containing header and body (if method is not HEAD).
For alternative handling errors with default http responses see Self::respond_flatten.
Sourcepub fn respond_flatten(
&self,
method: &Method,
path: &str,
headers: &HeaderMap,
) -> Response<'p>
pub fn respond_flatten( &self, method: &Method, path: &str, headers: &HeaderMap, ) -> Response<'p>
Like Self::respond, but generates “default” (proper http status code and empty body) responses also for errors. This will for example generate HTTP 404 response for request uri not found in path.
For manual error handling, see Self::respond.
Trait Implementations§
Auto Trait Implementations§
impl<'p, P> Freeze for Responder<'p, P>
impl<'p, P> RefUnwindSafe for Responder<'p, P>where
P: RefUnwindSafe,
impl<'p, P> Send for Responder<'p, P>where
P: Sync,
impl<'p, P> Sync for Responder<'p, P>where
P: Sync,
impl<'p, P> Unpin for Responder<'p, P>
impl<'p, P> UnwindSafe for Responder<'p, P>where
P: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out
indicating that a T
is niched.