import gleam/erlang/process
import mist
import serving_static_assets/app/router
import serving_static_assets/app/web.{Context}
import wisp
import wisp_mist
pub fn main() {
wisp.configure_logger()
let secret_key_base = wisp.random_string(64)
// A context is constructed holding the static directory path.
let ctx = Context(static_directory: static_directory())
// The handle_request function is partially applied with the context to make
// the request handler function that only takes a request.
let handler = router.handle_request(_, ctx)
let assert Ok(_) =
wisp_mist.handler(handler, secret_key_base)
|> mist.new
|> mist.port(8000)
|> mist.start
process.sleep_forever()
}
pub fn static_directory() -> String {
// The priv directory is where we store non-Gleam and non-Erlang files,
// including static assets to be served.
// This function returns an absolute path and works both in development and in
// production after compilation.
let assert Ok(priv_directory) = wisp.priv_directory("examples")
priv_directory <> "/static"
}