radiant

Backwards-compatible facade for import radiant. The implementation is split across focused radiant/* modules; this module remains the compatibility surface for application code.

Types

pub type CorsConfig {
  CorsConfig(
    origins: List(String),
    methods: List(http.Method),
    headers: List(String),
    max_age: Int,
  )
}

Constructors

  • CorsConfig(
      origins: List(String),
      methods: List(http.Method),
      headers: List(String),
      max_age: Int,
    )
pub type FileSystem {
  FileSystem(
    read_bits: fn(String) -> Result(BitArray, Nil),
    is_file: fn(String) -> Bool,
  )
}

Constructors

  • FileSystem(
      read_bits: fn(String) -> Result(BitArray, Nil),
      is_file: fn(String) -> Bool,
    )
pub type Key(a) =
  request.Key(a)
pub type Middleware =
  fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
    request.Req,
  ) -> response.Response(BitArray)
pub type Param(a) =
  router.Param(a)
pub type RadiantError {
  MissingHeader(String)
  InvalidUtf8Body
  MissingPathParam(String)
  InvalidIntParam(String, String)
  MissingQuery(String)
  InvalidIntQuery(String, String)
  InvalidFloatQuery(String, String)
  InvalidBoolQuery(String, String)
  MalformedQuery(String)
  MissingContext(String)
}

Constructors

  • MissingHeader(String)
  • InvalidUtf8Body
  • MissingPathParam(String)
  • InvalidIntParam(String, String)
  • MissingQuery(String)
  • InvalidIntQuery(String, String)
  • InvalidFloatQuery(String, String)
  • InvalidBoolQuery(String, String)
  • MalformedQuery(String)
  • MissingContext(String)
pub type Req =
  request.Req
pub type Router =
  router.Router

Values

pub fn any(
  router: router.Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn bad_request() -> response.Response(BitArray)
pub fn bad_request_with(
  body_text: String,
) -> response.Response(BitArray)
pub fn body(req: request.Req) -> BitArray
pub fn build(
  test_request: testing.TestRequest,
) -> request.Request(BitArray)
pub fn cors(
  config: CorsConfig,
) -> fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
  request.Req,
) -> response.Response(BitArray)
pub fn created(body_text: String) -> response.Response(BitArray)
pub fn default_cors() -> CorsConfig
pub fn delete(
  router: router.Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn delete1(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> router.Router
pub fn delete2(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> router.Router
pub fn delete3(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> router.Router
pub fn delete4(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn delete5(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn delete6(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  p6: router.Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn error_message(error: RadiantError) -> String

Return a concise, stable message for a RadiantError.

pub fn fallback(
  router: router.Router,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn forbidden() -> response.Response(BitArray)
pub fn forbidden_with(
  body_text: String,
) -> response.Response(BitArray)
pub fn get(
  router: router.Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn get1(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> router.Router
pub fn get2(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> router.Router
pub fn get3(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> router.Router
pub fn get4(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn get5(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn get6(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  p6: router.Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn get_context(
  req: request.Req,
  k: request.Key(a),
) -> Result(a, RadiantError)
pub fn handle(
  router: router.Router,
  req: request.Request(BitArray),
) -> response.Response(BitArray)
pub fn handle_with(
  router: router.Router,
  req: request.Request(anything),
  body: BitArray,
) -> response.Response(BitArray)
pub fn header(
  req: request.Req,
  key: String,
) -> Result(String, RadiantError)
pub fn headers(req: request.Req) -> List(#(String, String))
pub fn html(body_text: String) -> response.Response(BitArray)
pub fn int(name: String) -> router.Param(Int)
pub fn int_param(
  req: request.Req,
  name: String,
) -> Result(Int, RadiantError)
pub fn internal_server_error() -> response.Response(BitArray)
pub fn internal_server_error_with(
  body_text: String,
) -> response.Response(BitArray)
pub fn json(body_text: String) -> response.Response(BitArray)
pub fn json_body(
  key: request.Key(a),
  decoder: decode.Decoder(a),
) -> fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
  request.Req,
) -> response.Response(BitArray)
pub fn json_error(
  status: Int,
  message: String,
) -> response.Response(BitArray)
pub fn json_error_from(
  status: Int,
  error: RadiantError,
) -> response.Response(BitArray)

Build a JSON error response from a detailed RadiantError.

pub fn key(name: String) -> request.Key(a)
pub fn key_named(
  namespace: String,
  name: String,
) -> request.Key(a)
pub fn log(
  logger: fn(String) -> a,
) -> fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
  request.Req,
) -> response.Response(BitArray)
pub fn method(req: request.Req) -> http.Method
pub fn method_not_allowed(
  allowed: String,
) -> response.Response(BitArray)
pub fn middleware(
  router: router.Router,
  mw: fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
    request.Req,
  ) -> response.Response(BitArray),
) -> router.Router
pub fn mount(
  router: router.Router,
  prefix: String,
  sub_router: router.Router,
) -> router.Router
pub fn new() -> router.Router
pub fn no_content() -> response.Response(BitArray)
pub fn not_found() -> response.Response(BitArray)
pub fn not_found_with(
  body_text: String,
) -> response.Response(BitArray)
pub fn ok(body_text: String) -> response.Response(BitArray)
pub fn options(
  router: router.Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn original(req: request.Req) -> request.Request(BitArray)
pub fn patch(
  router: router.Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn patch1(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> router.Router
pub fn patch2(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> router.Router
pub fn patch3(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> router.Router
pub fn patch4(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn patch5(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn patch6(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  p6: router.Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn path_for(
  pattern: String,
  params: List(#(String, String)),
) -> Result(String, RadiantError)
pub fn path_for1(
  pattern: String,
  p1: router.Param(a),
  v1: a,
) -> Result(String, RadiantError)
pub fn path_for2(
  pattern: String,
  p1: router.Param(a),
  v1: a,
  p2: router.Param(b),
  v2: b,
) -> Result(String, RadiantError)
pub fn path_for3(
  pattern: String,
  p1: router.Param(a),
  v1: a,
  p2: router.Param(b),
  v2: b,
  p3: router.Param(c),
  v3: c,
) -> Result(String, RadiantError)
pub fn path_for4(
  pattern: String,
  p1: router.Param(a),
  v1: a,
  p2: router.Param(b),
  v2: b,
  p3: router.Param(c),
  v3: c,
  p4: router.Param(d),
  v4: d,
) -> Result(String, RadiantError)
pub fn path_for5(
  pattern: String,
  p1: router.Param(a),
  v1: a,
  p2: router.Param(b),
  v2: b,
  p3: router.Param(c),
  v3: c,
  p4: router.Param(d),
  v4: d,
  p5: router.Param(e),
  v5: e,
) -> Result(String, RadiantError)
pub fn path_for6(
  pattern: String,
  p1: router.Param(a),
  v1: a,
  p2: router.Param(b),
  v2: b,
  p3: router.Param(c),
  v3: c,
  p4: router.Param(d),
  v4: d,
  p5: router.Param(e),
  v5: e,
  p6: router.Param(f),
  v6: f,
) -> Result(String, RadiantError)
pub fn post(
  router: router.Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn post1(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> router.Router
pub fn post2(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> router.Router
pub fn post3(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> router.Router
pub fn post4(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn post5(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn post6(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  p6: router.Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn put(
  router: router.Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn put1(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  handler: fn(request.Req, a) -> response.Response(BitArray),
) -> router.Router
pub fn put2(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  handler: fn(request.Req, a, b) -> response.Response(BitArray),
) -> router.Router
pub fn put3(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  handler: fn(request.Req, a, b, c) -> response.Response(BitArray),
) -> router.Router
pub fn put4(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  handler: fn(request.Req, a, b, c, d) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn put5(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  handler: fn(request.Req, a, b, c, d, e) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn put6(
  router: router.Router,
  pattern: String,
  p1: router.Param(a),
  p2: router.Param(b),
  p3: router.Param(c),
  p4: router.Param(d),
  p5: router.Param(e),
  p6: router.Param(f),
  handler: fn(request.Req, a, b, c, d, e, f) -> response.Response(
    BitArray,
  ),
) -> router.Router
pub fn queries(req: request.Req) -> List(#(String, String))
pub fn query(
  req: request.Req,
  key: String,
) -> Result(String, RadiantError)
pub fn query_bool(
  req: request.Req,
  key: String,
) -> Result(Bool, RadiantError)
pub fn query_float(
  req: request.Req,
  key: String,
) -> Result(Float, RadiantError)
pub fn query_int(
  req: request.Req,
  key: String,
) -> Result(Int, RadiantError)
pub const query_method: http.Method
pub fn query_route(
  router: router.Router,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router
pub fn redirect(uri: String) -> response.Response(BitArray)
pub fn req_path(req: request.Req) -> String
pub fn request(
  method: http.Method,
  raw_path: String,
) -> testing.TestRequest
pub fn rescue(
  on_error: fn(exception.Exception) -> response.Response(BitArray),
) -> fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
  request.Req,
) -> response.Response(BitArray)
pub fn response(
  status: Int,
  body_text: String,
) -> response.Response(BitArray)
pub fn route(
  router: router.Router,
  method: http.Method,
  pattern: String,
  handler: fn(request.Req) -> response.Response(BitArray),
) -> router.Router

Register a route for any HTTP method.

pub fn routes(
  router: router.Router,
) -> List(#(http.Method, String))
pub fn scope(
  router: router.Router,
  prefix: String,
  builder: fn(router.Router) -> router.Router,
) -> router.Router
pub fn serve_static(
  prefix prefix: String,
  from directory: String,
  via fs: FileSystem,
) -> fn(fn(request.Req) -> response.Response(BitArray)) -> fn(
  request.Req,
) -> response.Response(BitArray)
pub fn set_context(
  req: request.Req,
  k: request.Key(a),
  value: a,
) -> request.Req
pub fn should_have_body(
  resp: response.Response(BitArray),
  expected: String,
) -> response.Response(BitArray)
pub fn should_have_header(
  resp: response.Response(BitArray),
  name: String,
  expected: String,
) -> response.Response(BitArray)
pub fn should_have_json_body(
  resp: response.Response(BitArray),
  decoder: decode.Decoder(a),
) -> a
pub fn should_have_status(
  resp: response.Response(BitArray),
  expected: Int,
) -> response.Response(BitArray)
pub fn str(name: String) -> router.Param(String)
pub fn str_param(
  req: request.Req,
  name: String,
) -> Result(String, RadiantError)
pub fn test_delete(raw_path: String) -> request.Request(BitArray)
pub fn test_get(raw_path: String) -> request.Request(BitArray)
pub fn test_head(raw_path: String) -> request.Request(BitArray)
pub fn test_options(
  raw_path: String,
) -> request.Request(BitArray)
pub fn test_patch(
  raw_path: String,
  body_text: String,
) -> request.Request(BitArray)
pub fn test_post(
  raw_path: String,
  body_text: String,
) -> request.Request(BitArray)
pub fn test_put(
  raw_path: String,
  body_text: String,
) -> request.Request(BitArray)
pub fn test_request(
  method: http.Method,
  raw_path: String,
) -> request.Request(BitArray)
pub fn text_body(
  req: request.Req,
) -> Result(String, RadiantError)
pub fn unauthorized() -> response.Response(BitArray)
pub fn unauthorized_with(
  body_text: String,
) -> response.Response(BitArray)
pub fn unprocessable_entity() -> response.Response(BitArray)
pub fn unprocessable_entity_with(
  body_text: String,
) -> response.Response(BitArray)
pub fn with_header(
  resp: response.Response(BitArray),
  key: String,
  value: String,
) -> response.Response(BitArray)
pub fn with_query(
  test_request: testing.TestRequest,
  key: String,
  value: String,
) -> testing.TestRequest
pub fn with_request_body(
  test_request: testing.TestRequest,
  body: String,
) -> testing.TestRequest
pub fn with_request_header(
  test_request: testing.TestRequest,
  key: String,
  value: String,
) -> testing.TestRequest
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