Current section
Files
Jump to
Current section
Files
src/starfruit.gleam
import gleam/erlang/process
import gleam/int
import gleam/io
import gleam/option.{None}
import gleam/string
import glisten.{Packet}
import starfruit/internal
/// This is all you need!
pub fn start(
port port: Int,
cert cert: String,
key key: String,
local local: Bool,
) -> Nil {
io.print(
string.concat([
"⋆✴︎˚。⋆ Starfruit is running on port ",
int.to_string(port),
"!! ⋆。˚✴︎⋆",
]),
)
let assert Ok(_) =
glisten.new(fn(_conn) { #(Nil, None) }, fn(_state, msg, conn) {
let assert Packet(msg) = msg
let _resp =
internal.parse_url(msg)
|> internal.router()
|> internal.response()
|> internal.senddata(conn)
glisten.stop()
})
|> glisten.with_tls(certfile: cert, keyfile: key)
|> internal.bind(local)
|> glisten.start(port)
process.sleep_forever()
}