radiant/router

Router types, route registration, and dispatch.

Types

A middleware transforms a handler into a new handler.

pub type Middleware =
  fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
    request.Req,
  ) -> response.Response(BitArray)

A typed path parameter for use with get1, get2, and friends.

pub opaque type Param(a)

An opaque router that maps HTTP method + path pattern to handlers.

pub opaque type Router

Values

pub fn any(
  router: Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn delete(
  router: Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn delete1(
  router: Router,
  pattern: String,
  p1: Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> Router
pub fn delete2(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> Router
pub fn delete3(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> Router
pub fn delete4(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn delete5(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn delete6(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  p6: Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn fallback(
  router: Router,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn get(
  router: Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn get1(
  router: Router,
  pattern: String,
  p1: Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> Router
pub fn get2(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> Router
pub fn get3(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> Router
pub fn get4(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn get5(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn get6(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  p6: Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn handle(
  router: Router,
  req: request.Request(BitArray),
) -> response.Response(BitArray)
pub fn handle_with(
  router: Router,
  req: request.Request(anything),
  body: BitArray,
) -> response.Response(BitArray)
pub fn int(name: String) -> Param(Int)
pub fn middleware(
  router: Router,
  mw: fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
    request.Req,
  ) -> response.Response(BitArray),
) -> Router
pub fn mount(
  router: Router,
  prefix: String,
  sub_router: Router,
) -> Router
pub fn new() -> Router
pub fn options(
  router: Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn patch(
  router: Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn patch1(
  router: Router,
  pattern: String,
  p1: Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> Router
pub fn patch2(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> Router
pub fn patch3(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> Router
pub fn patch4(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn patch5(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn patch6(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  p6: Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn path_for(
  pattern: String,
  params: List(#(String, String)),
) -> Result(String, request.RadiantError)
pub fn path_for1(
  pattern: String,
  p1: Param(a),
  v1: a,
) -> Result(String, request.RadiantError)
pub fn path_for2(
  pattern: String,
  p1: Param(a),
  v1: a,
  p2: Param(b),
  v2: b,
) -> Result(String, request.RadiantError)
pub fn path_for3(
  pattern: String,
  p1: Param(a),
  v1: a,
  p2: Param(b),
  v2: b,
  p3: Param(c),
  v3: c,
) -> Result(String, request.RadiantError)
pub fn path_for4(
  pattern: String,
  p1: Param(a),
  v1: a,
  p2: Param(b),
  v2: b,
  p3: Param(c),
  v3: c,
  p4: Param(d),
  v4: d,
) -> Result(String, request.RadiantError)
pub fn path_for5(
  pattern: String,
  p1: Param(a),
  v1: a,
  p2: Param(b),
  v2: b,
  p3: Param(c),
  v3: c,
  p4: Param(d),
  v4: d,
  p5: Param(e),
  v5: e,
) -> Result(String, request.RadiantError)
pub fn path_for6(
  pattern: String,
  p1: Param(a),
  v1: a,
  p2: Param(b),
  v2: b,
  p3: Param(c),
  v3: c,
  p4: Param(d),
  v4: d,
  p5: Param(e),
  v5: e,
  p6: Param(f),
  v6: f,
) -> Result(String, request.RadiantError)
pub fn post(
  router: Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn post1(
  router: Router,
  pattern: String,
  p1: Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> Router
pub fn post2(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> Router
pub fn post3(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> Router
pub fn post4(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn post5(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn post6(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  p6: Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn put(
  router: Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn put1(
  router: Router,
  pattern: String,
  p1: Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> Router
pub fn put2(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> Router
pub fn put3(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> Router
pub fn put4(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn put5(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> Router
pub fn put6(
  router: Router,
  pattern: String,
  p1: Param(a),
  p2: Param(b),
  p3: Param(c),
  p4: Param(d),
  p5: Param(e),
  p6: Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> Router
pub const query_method: http.Method

The HTTP QUERY method from RFC 10008.

pub fn query_route(
  router: Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router
pub fn route(
  router: Router,
  method: http.Method,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> Router

Register a route for any HTTP method.

pub fn routes(router: Router) -> List(#(http.Method, String))
pub fn scope(
  router: Router,
  prefix: String,
  builder: fn(Router) -> Router,
) -> Router
pub fn str(name: String) -> Param(String)
pub fn wrap(
  mw: fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
    request.Req,
  ) -> response.Response(BitArray),
  handler: fn(request.Req) -> response.Response(BitArray),
) -> fn(request.Req) -> response.Response(BitArray)
Search Document