amber/serve

Types

pub type HttpServer

Values

pub fn addr(of server: HttpServer) -> net_addr.NetAddr

The local address this server is listening on.

pub fn finished(
  of server: HttpServer,
) -> promise.Promise(Result(Nil, error.Error))

A promise that resolves once server finishes - eg. when aborted using the signal passed to ServeOption.Signal.

pub fn ref(server: HttpServer) -> Nil

Make the server block the event loop from finishing.

pub fn serve(
  handler: fn(
    request.Request,
    serve_handler_info.ServeHandlerInfo,
  ) -> promise.Promise(response.Response),
) -> Result(HttpServer, error.Error)

Serves HTTP requests with the given handler.

Examples

serve.serve(fn(_request, _info) {
  promise.resolve(response.new("Hello, world!"))
})
pub fn serve_with(
  with options: List(serve_option.ServeOption),
  apply handler: fn(
    request.Request,
    serve_handler_info.ServeHandlerInfo,
  ) -> promise.Promise(response.Response),
) -> Result(HttpServer, error.Error)

Serves HTTP requests with the given options and handler.

Examples

let assert Ok(server) =
  serve.serve_with(
    [serve_option.Port(3000), serve_option.Hostname("127.0.0.1")],
    fn(_request, _info) {
      promise.resolve(response.new("Hello, world!"))
    },
  )
pub fn shutdown(
  server: HttpServer,
) -> promise.Promise(Result(Nil, error.Error))

Gracefully close the server. No more new connections are accepted, while pending requests are allowed to finish.

pub fn unref(server: HttpServer) -> Nil

Make the server not block the event loop from finishing.

Search Document