Header menu logo FSharp.ATProto

Middleware Module

XRPC middleware for error formatting, rate limiting, and request validation.

Functions and values

Function or value Description

authRequired message jsonOptions

Full Usage: authRequired message jsonOptions

Parameters:
Returns: IResult

Format an AuthRequired error (401).

message : string
jsonOptions : JsonSerializerOptions
Returns: IResult

clientKey ctx

Full Usage: clientKey ctx

Parameters:
Returns: string

Extract the client key for rate limiting (uses remote IP or "unknown").

ctx : HttpContext
Returns: string

intQueryParam name defaultValue minValue maxValue ctx

Full Usage: intQueryParam name defaultValue minValue maxValue ctx

Parameters:
    name : string
    defaultValue : int
    minValue : int
    maxValue : int
    ctx : HttpContext

Returns: int

Parse a query parameter as an integer with a default value and bounds.

name : string
defaultValue : int
minValue : int
maxValue : int
ctx : HttpContext
Returns: int

invalidRequest message jsonOptions

Full Usage: invalidRequest message jsonOptions

Parameters:
Returns: IResult

Format an InvalidRequest error (400).

message : string
jsonOptions : JsonSerializerOptions
Returns: IResult

methodNotImplemented nsid jsonOptions

Full Usage: methodNotImplemented nsid jsonOptions

Parameters:
Returns: IResult

Format a MethodNotImplemented error (501).

nsid : string
jsonOptions : JsonSerializerOptions
Returns: IResult

optionalQueryParam name ctx

Full Usage: optionalQueryParam name ctx

Parameters:
Returns: string option

Parse an optional query parameter.

name : string
ctx : HttpContext
Returns: string option

rateLimitExceeded retryAfterSeconds jsonOptions

Full Usage: rateLimitExceeded retryAfterSeconds jsonOptions

Parameters:
Returns: IResult

Format a rate limit exceeded error (429) with Retry-After header.

retryAfterSeconds : float
jsonOptions : JsonSerializerOptions
Returns: IResult

requireQueryParam name ctx

Full Usage: requireQueryParam name ctx

Parameters:
Returns: Result<string, string>

Parse a required query parameter. Returns None with an error message if missing.

name : string
ctx : HttpContext
Returns: Result<string, string>

tryReadJsonBody jsonOptions ctx

Full Usage: tryReadJsonBody jsonOptions ctx

Parameters:
Returns: Task<Result<'T, string>>

Try to read and deserialize the JSON request body.

jsonOptions : JsonSerializerOptions
ctx : HttpContext
Returns: Task<Result<'T, string>>

xrpcError statusCode error message jsonOptions

Full Usage: xrpcError statusCode error message jsonOptions

Parameters:
Returns: IResult

Format an AT Protocol error response. Writes the JSON body directly to avoid DI dependency on JsonSerializerOptions service.

statusCode : int
error : string
message : string
jsonOptions : JsonSerializerOptions
Returns: IResult

Type something to start searching.