Current section

Files

Jump to
mist src mist.gleam
Raw

src/mist.gleam

import glisten
import glisten/tcp
import mist/http.{State} as mhttp
/// Runs an HTTP Request->Response server at the given port, with your defined
/// handler. This will automatically read the full body contents up to the
/// specified `max_body_limit` in bytes. If you'd prefer to have finer-grain
/// control over this behavior, consider using `mist.serve`.
pub fn run_service(
port: Int,
handler: mhttp.Handler,
max_body_limit max_body_limit: Int,
) -> Result(Nil, glisten.StartError) {
handler
|> mhttp.handler(max_body_limit)
|> tcp.acceptor_pool_with_data(mhttp.new_state())
|> glisten.serve(port, _)
}
/// Slightly more flexible alternative to `run_service`. This allows hooking
/// into the `mist/http.{handler_func}` method. Note that the request body
/// will not be automatically read. You will need to call `http.read_body`.
pub fn serve(
port: Int,
handler: tcp.LoopFn(State),
) -> Result(Nil, glisten.StartError) {
handler
|> tcp.acceptor_pool_with_data(mhttp.new_state())
|> glisten.serve(port, _)
}