package sihl
The modular functional web framework
Install
Dune Dependency
Authors
Maintainers
Sources
sihl-queue-0.1.9.tbz
sha256=77f0813d75a88edd14b3396e8b848d94c31c28803299b4b1bd4b78b1de4a2e80
sha512=a8907bc35ea14b7c3a7d638979a2a274860202b2de58b84b5621a4908db001ace493d8aa2e5383f4c8b1847efd256938592f63ef75a41521284b3640d3a7442a
doc/src/sihl.http/service.ml.html
Source file service.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
module Core = Sihl_core let log_src = Logs.Src.create "sihl.service.http" module Logs = (val Logs.src_log log_src : Logs.LOG) let to_opium_builder (meth, path, handler) = let open Route in match meth with | Get -> Opium.Std.get path handler | Post -> Opium.Std.post path handler | Put -> Opium.Std.put path handler | Delete -> Opium.Std.delete path handler | Any -> Opium.Std.all path handler ;; let routers_to_opium_builders routers = routers |> List.map (fun router -> let routes = Route.router_to_routes router in List.map to_opium_builder routes) |> List.concat ;; let run_forever () = let p, _ = Lwt.wait () in p ;; type config = { port : int option } let config port = { port } let schema = let open Conformist in make [ optional (int ~default:3000 "PORT") ] config ;; let registered_routers = ref [] let start_server _ = Logs.debug (fun m -> m "Starting HTTP server"); let port_nr = Option.value (Core.Configuration.read schema).port ~default:33000 in let app = Opium.Std.App.(empty |> port port_nr |> cmd_name "Sihl App") in let builders = routers_to_opium_builders !registered_routers in let app = List.fold_left (fun app builder -> builder app) app builders in (* We don't want to block here, the returned Lwt.t will never resolve *) let _ = Opium.Std.App.start app in run_forever () ;; let start_cmd = Core.Command.make ~name:"start" ~help:"" ~description:"Start the web server" (fun _ -> start_server ()) ;; (* Lifecycle *) let start ctx = Lwt.return ctx let stop _ = Lwt.return () let lifecycle = Core.Container.Lifecycle.create "http" ~start ~stop let register ?(routers = []) () = registered_routers := routers; let configuration = Core.Configuration.make ~schema () in Core.Container.Service.create ~configuration ~commands:[ start_cmd ] lifecycle ;;
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>