extraction library
Extractors: turning a request into the values a handler declares.
Import this when writing a custom extractor, or when calling the built-ins by hand rather than through generated code.
import 'package:dust_server/extraction.dart';
final class BearerAuth implements FromRequestParts<AuthUser> {
const BearerAuth();
@override
Future<Result<AuthUser, Rejection>> extract(Request request) async { ... }
}
Everything here is also exported from package:dust_server/server.dart.
Classes
- ApiKeyExtractable
- Extracts an API key from a header, falling back to the query string.
- Authorization
-
An
Authorizationheader, split where the specification splits it. - BasicCredentials
-
A username and password from an
Authorization: Basicheader. - BasicCredentialsExtractable
-
Extracts and decodes an
Authorization: Basic base64(user:password)header. - BearerTokenExtractable
-
Extracts the token from an
Authorization: Bearer <token>header. -
ContextExtractable<
T> - Extracts a value middleware stored in the shelf request context.
-
CookieExtractable<
T> -
Extracts one cookie, coerced to
T. - CookieJar
- The cookies one request carried.
- CookieJarExtractable
- Extracts every cookie at once.
-
Err<
T, E> - Failed operation result.
-
FallibleExtractable<
T> - Hands the rejection to the handler instead of short-circuiting.
-
FirstOf<
T> - Tries each extractor in order and takes the first that succeeds.
- FormExtractable
-
Decodes an
application/x-www-form-urlencodedbody. - FormMap
- The decoded fields of a form body.
-
FromRequest<
T> - Marks an extractor that reads the request body.
-
FromRequestParts<
T> -
Builds a
Tfrom a request, or rejects it. -
HeaderExtractable<
T> -
Extracts one header, coerced to
T. - HeaderMapExtractable
- Extracts every header as a map with lower-case keys.
- HostExtractable
- The host a request was addressed to.
-
JsonExtractable<
T> -
Decodes a JSON object body into
T. -
JsonListExtractable<
T> -
Decodes a JSON array body into
List<T>. - MatchedRouteSlot
- A box a layer passes down so the router can report back what it matched.
- MultipartExtractable
-
Decodes a
multipart/form-databody. - MultipartForm
-
The decoded parts of a
multipart/form-databody. - MultipartPart
- One part of a multipart body, still arriving.
-
None<
T> - Option state for an absent value.
-
Ok<
T, E> - Successful operation result.
-
Option<
T> - Optional value wrapper for Rust-style present-or-absent values.
-
OptionalExtractable<
T> - Turns a client-error rejection into None.
-
PathExtractable<
T> -
Extracts one router-captured path parameter, coerced to
T. - PeerExtractable
- Extracts the connection information for this request.
- PeerInfo
- The peer address and port of the connection serving this request.
-
QueriesExtractable<
T> - Extracts every query value as a map.
-
QueryExtractable<
T> -
Extracts one query value, coerced to
T. -
QueryListExtractable<
T> -
Extracts every value for one repeated query key, coerced to
T. - RawBodyExtractable
- Reads the body as raw bytes, with no media type requirement.
- RawQueryExtractable
- Extracts the raw, undecoded query string.
- Request
- An HTTP request to be processed by a Shelf application.
- RequestParts
- The non-body half of a request.
-
Result<
T, E> -
Result of an operation that can either succeed with
Tor fail withE. - SessionIdExtractable
- Extracts a session identifier from a cookie.
-
Some<
T> - Option state for a present value.
-
StateExtractable<
T extends Object> -
Reads application state attached with
Router.withState. - StreamBodyExtractable
- Hands the body to the handler as an unread stream.
- StreamedMultipart
- A multipart body, delivered a part at a time.
- StreamedMultipartExtractable
-
Hands a
multipart/form-databody to the handler a part at a time. - TextBodyExtractable
- Reads the body as UTF-8 text.
- Unit
- Empty success value for operations that only signal completion.
- UploadedFile
- One decoded part of a multipart body.
-
ValidatedExtractable<
T extends Validatable> -
Runs the
Validate()constraints after inner builds the value.
Extensions
-
OptionCombine
on Option<
T> - Combining Option values, and moving between Option and Result.
-
OptionFlatten
on Option<
Option< T> > - Removing one level of Option nesting.
-
OptionQuery
on Option<
T> - Reading an Option without matching on it.
-
OptionTransform
on Option<
T> - Transforming and choosing between Option values.
-
OptionTranspose
on Option<
Result< T, E> > - Swapping an Option of a Result inside out.
-
OptionUnzip
on Option<
(A, B)> - Splitting an Option of a pair.
-
RejectOnFailure
on Result<
T, Rejection> - Collapses an extraction outcome onto its value.
- RequestExtraction on Request
- Reading values straight off the request.
-
RequireExtraction
on FromRequestParts<
T> - Runs an extractor and throws the rejection instead of returning it.
Constants
- bodyLimitContextKey → const String
- The context key carrying the active body limit.
- defaultBodyLimit → const int
- The default maximum body size, in bytes.
- matchedPathKey → const String
- The context key the matched route pattern travels under.
- matchedRouteSlotKey → const String
- The context key a MatchedRouteSlot travels under.
- pathParametersKey → const String
- The context key captured path parameters travel under.
- unit → const Unit
- Shared unit value.
Functions
-
apiKey(
{String header = 'x-api-key', String query = 'api_key', bool allowQuery = true}) → FromRequestParts< String> - Reads an API key from a header, falling back to the query string.
-
basicCredentials(
{String realm = 'restricted'}) → FromRequestParts< BasicCredentials> -
Reads and decodes an
Authorization: Basicheader. -
bearerToken(
) → FromRequestParts< String> -
Reads the token from an
Authorization: Bearerheader. -
body<
T> (T deserialize(Map< String, Object?> json)) → FromRequest<T> -
Decodes a JSON object body with
deserialize. -
bodyList<
T> (T deserialize(Map< String, Object?> json)) → FromRequest<List< T> > -
Decodes a JSON array body with
deserialize. -
bodyStream(
) → FromRequest< Stream< List< >int> > - Hands the body to the handler as an unread stream.
-
coerce<
T> (String raw, {required String source}) → Result< T, Rejection> -
Converts one raw string from a path segment, query value, header, or form
field into
T. -
Reads one cookie, coerced to
T. A nullableTmakes it optional. - Reads every cookie at once.
-
effectiveBodyLimit(
Request request, int limit) → int -
The smaller of
limitand whatever the router configured. -
fallible<
T> (FromRequestParts< T> inner) → FromRequestParts<Result< T, Rejection> > -
Hands
inner's rejection to the handler instead of short-circuiting. -
firstOf<
T> (List< FromRequestParts< extractors) → FromRequestParts<T> >T> -
Takes whichever of
extractorssucceeds first. -
form(
) → FromRequest< FormMap> -
Decodes an
application/x-www-form-urlencodedbody. -
header(
String name) → FromRequestParts< String?> -
Reads one header, or
nullwhen it is absent. -
headers(
) → FromRequestParts< Map< String, String> > - Reads every header at once.
-
host(
) → FromRequestParts< String> -
Reads the
Hostheader, which the client controls — compare, do not trust. -
isJsonMediaType(
String? mediaType) → bool -
Whether
mediaTypeis JSON or a+jsonstructured syntax suffix. -
matchedPathOf(
Request request) → String? -
The route pattern that matched
request, ornullwhen none did. -
multipart(
) → FromRequest< MultipartForm> -
Decodes a
multipart/form-databody, buffering every part. -
multipartStream(
{int limit = 64 * 1024 * 1024}) → FromRequest< StreamedMultipart> -
Hands a
multipart/form-databody over a part at a time, without buffering. -
optional<
T> (FromRequestParts< T> inner) → FromRequestParts<Option< T> > -
Turns a client-error rejection from
innerintoNone. -
path<
T> (String name) → FromRequestParts< T> -
Reads the
{name}path segment, coerced toT. -
pathParametersOf(
Request request) → Map< String, String> -
Reads router-captured path parameters from
request. -
peer(
) → FromRequestParts< PeerInfo> - The connection's peer address and port.
-
queries(
) → FromRequestParts< Map< String, String> > - Reads every query pair at once.
-
query<
T> (String name) → FromRequestParts< T> -
Reads one query value, coerced to
T. A nullableTmakes it optional. -
queryList<
T> (String name) → FromRequestParts< List< T> > -
Reads every value of a repeated query key, coerced to
T. -
rawBody(
) → FromRequest< Uint8List> - Reads the body as raw bytes.
-
rawQuery(
) → FromRequestParts< String?> -
Reads the raw, undecoded query string, or
nullwhen there is none. -
rawRequest(
) → FromRequestParts< Request> - The request itself, for a handler that wants to reach past the extractors.
-
readBody(
Request request, {int limit = defaultBodyLimit}) → Future< Result< Uint8List, Rejection> > -
Reads the whole request body, rejecting with 413 past
limit. -
readsRequestBody(
FromRequestParts< Object?> extractor) → bool -
Whether
extractorends up reading the request body. -
reportMatchedRoute(
Request request, String route) → void -
Fills the slot
requestcarries, when it carries one. -
sessionId(
{String name = 'session'}) → FromRequestParts< String> - Reads a session identifier from a cookie.
-
state<
T extends Object> () → FromRequestParts< T> -
Reads the application state of type
Tattached withwithState. -
stateKeyFor<
T> () → String -
The request-context key state of type
Ttravels under. -
stateMiddleware(
Map< String, Object> state) → Middleware? -
Builds the middleware that puts
stateon every request below a group. -
textBody(
) → FromRequest< String> - Reads the body as UTF-8 text.
-
typeOf<
X> () → Type -
Reifies
Xso nullable targets can be compared, sinceT == String?is not valid syntax. -
valid<
T extends Validatable> (FromRequestParts< T> inner) → FromRequestParts<T> -
Runs the generated
validateafterinnerbuilds the value.