pinkblackrose/src/clj/pinkblackrose/handler.clj

43 lines
1.4 KiB
Clojure

(ns pinkblackrose.handler
(:require
[pinkblackrose.middleware :as middleware]
[pinkblackrose.layout :refer [error-page]]
[pinkblackrose.routes.home :refer [home-routes]]
[pinkblackrose.routes.services :refer [service-routes]]
[reitit.swagger-ui :as swagger-ui]
[reitit.ring :as ring]
[ring.middleware.content-type :refer [wrap-content-type]]
[ring.middleware.webjars :refer [wrap-webjars]]
[pinkblackrose.env :refer [defaults]]
[mount.core :as mount]))
(mount/defstate init-app
:start ((or (:init defaults) (fn [])))
:stop ((or (:stop defaults) (fn []))))
(mount/defstate app-routes
:start
(ring/ring-handler
(ring/router
[(home-routes)
(service-routes)])
(ring/routes
(swagger-ui/create-swagger-ui-handler
{:path "/swagger-ui"
:url "/api/swagger.json"
:config {:validator-url nil}})
(ring/create-resource-handler
{:path "/"})
(wrap-content-type
(wrap-webjars (constantly nil)))
(ring/create-default-handler
{:not-found
(constantly (error-page {:status 404, :title "404 - Page not found"}))
:method-not-allowed
(constantly (error-page {:status 405, :title "405 - Not allowed"}))
:not-acceptable
(constantly (error-page {:status 406, :title "406 - Not acceptable"}))}))))
(defn app []
(middleware/wrap-base #'app-routes))