You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
704 B
Clojure
23 lines
704 B
Clojure
(ns asciinema.component.yada-listener
|
|
(:require [bidi.vhosts :refer [vhosts-model]]
|
|
[com.stuartsierra.component :as component]
|
|
[yada.yada :as yada]))
|
|
|
|
(defrecord YadaListener [port server app]
|
|
component/Lifecycle
|
|
(start [component]
|
|
(if server
|
|
component
|
|
(let [handler (vhosts-model [:* (:routes app)]) ; wrap in * vhost to make path-for work
|
|
server (yada/listener handler {:port port})]
|
|
(assoc component :server server))))
|
|
(stop [component]
|
|
(if server
|
|
(do
|
|
((:close server))
|
|
(assoc component :server nil))
|
|
component)))
|
|
|
|
(defn yada-listener [{:keys [port app]}]
|
|
(map->YadaListener {:port port :app app}))
|