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.
asciinema.org/src/asciinema/component/yada_listener.clj

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}))