howdy/server

Howdy server, using cowboy as the base server

Types

Messages that are sent the OTP

pub opaque type Message(a)

Returned to the server if the route has a matching template

pub opaque type RequestType(a)

Compiled route stored within the state

pub opaque type Route(a)

Functions

pub fn get_routes(pid: Sender(Message(a))) -> Sender(Message(a))

Prints out the registered routes for debugging This will be better formatted when the server is ready for production

pub fn register_middleware(pid: Sender(Message(a)), middleware: fn(
    fn(Request(BitString)) -> Response(BitBuilder),
  ) -> fn(Request(BitString)) -> Response(BitBuilder)) -> Sender(
  Message(a),
)

registers middleware for the server

Example

case server.start(routes) {
   Ok(pid) -> {
     pid
     |> server.add_middleware(fn(middleware) {
       middleware
       |> service.prepend_response_header("made-by", "howdy")
       |> service.prepend_response_header("with-love", "howdy team")
     })
     |> server.get_routes()
     erlang.sleep_forever()
   }
   Error(_) -> io.println("Server failed to start")
 }
}
pub fn register_routes(pid: Sender(Message(a)), route: Route(b)) -> Sender(
  Message(c),
)

registers additional routes after the inital routes have been

pub fn start(router: Route(Nil)) -> Result(
  Sender(Message(a)),
  StartError,
)

starts a new instance of Howdy setting the port number to 3000

pub fn start_with_config(router: Route(a), config: a) -> Result(
  Sender(Message(b)),
  StartError,
)
pub fn start_with_port(port: Int, router: Route(a), config: a) -> Result(
  Sender(Message(a)),
  StartError,
)

starts a new instance of Howdy and sets the port number