Struct FastCgiRequest
pub struct FastCgiRequest {
pub request_id: u16,
pub role: Role,
pub keep_conn: bool,
pub params: Vec<(Bytes, Bytes)>,
pub stdin: FastCgiBody,
pub data: FastCgiBody,
}fastcgi only.Expand description
A complete FastCGI request received from a web server.
The FastCgiServer assembles this from the
FCGI_BEGIN_REQUEST, FCGI_PARAMS, FCGI_STDIN, and (for
Role::Filter) FCGI_DATA records before passing it to the inner
service.
§Roles
Role::Responder:paramscontains the CGI environment,stdincontains the request body.datais empty.Role::Authorizer:paramscontains the CGI environment.stdinanddataare empty. The inner service decides allow/deny via the HTTP status code in itsFastCgiResponsestdout — 200 means allowed; any other status is returned to the client as the denial response.Role::Filter:paramscontains the CGI environment (includingFCGI_DATA_LAST_MODandFCGI_DATA_LENGTH),stdincontains the request body, anddatacontains the raw file data to be filtered.
Fields§
§request_id: u16Request ID assigned by the web server (1–65535).
role: RoleRole the web server expects the application to fulfil.
keep_conn: boolIf true, the web server wants to reuse the connection for further requests.
params: Vec<(Bytes, Bytes)>CGI environment variables received via FCGI_PARAMS records.
Each entry is a (name, value) pair decoded from the FastCGI
name-value encoding.
stdin: FastCgiBodyStreaming body data from FCGI_STDIN records.
Read via [AsyncRead][tokio::io::AsyncRead]. For the Authorizer role
this stream is empty.
data: FastCgiBodyStreaming file data from FCGI_DATA records (Filter role only).
Empty for Responder and Authorizer roles.
Implementations§
Trait Implementations§
§impl Debug for FastCgiRequest
impl Debug for FastCgiRequest
§impl<S> Service<FastCgiRequest> for FastCgiHttpService<S>
impl<S> Service<FastCgiRequest> for FastCgiHttpService<S>
§type Output = FastCgiResponse
type Output = FastCgiResponse
§async fn serve(
&self,
req: FastCgiRequest,
) -> Result<<FastCgiHttpService<S> as Service<FastCgiRequest>>::Output, <FastCgiHttpService<S> as Service<FastCgiRequest>>::Error>
async fn serve( &self, req: FastCgiRequest, ) -> Result<<FastCgiHttpService<S> as Service<FastCgiRequest>>::Output, <FastCgiHttpService<S> as Service<FastCgiRequest>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Auto Trait Implementations§
impl Freeze for FastCgiRequest
impl !RefUnwindSafe for FastCgiRequest
impl Send for FastCgiRequest
impl !Sync for FastCgiRequest
impl Unpin for FastCgiRequest
impl UnsafeUnpin for FastCgiRequest
impl !UnwindSafe for FastCgiRequest
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
value to writer§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
value to writer§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
value to writer§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
value to writer§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
value to writer