Last active
April 30, 2018 14:13
-
-
Save rwat/8df6da93ce10afc5edf760c46d4f6276 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns pg.web.core | |
(:require [clojure.core.async :refer [>! <! >!! <!! alts! chan go go-loop put! take! thread timeout close!] :as async] | |
[clojure.tools.namespace.repl :refer [refresh]] | |
[compojure.core :refer [defroutes GET POST]] | |
[compojure.route :as route] | |
[compojure.handler :as handler] | |
[integrant.core :as ig] | |
[ring.adapter.jetty :as jetty] | |
[ring.middleware.content-type :refer [wrap-content-type]] | |
[ring.middleware.format-response :refer [wrap-transit-json-response]] | |
[ring.middleware.params :refer [wrap-params]] | |
[ring.middleware.keyword-params :refer [wrap-keyword-params]] | |
[ring.middleware.session :refer [wrap-session]] | |
[pg.web.messaging :as messaging] | |
[pg.web.util :as web-util])) | |
(defn index | |
[req] | |
(let [session (:session req)] | |
{:status 200 | |
:headers {"Content-Type" "text/html"} | |
:session (if (:uid session) | |
session | |
(assoc session :uid (web-util/unique-id))) | |
:body (slurp "./resources/public/index.html")})) | |
(defn test-page | |
[req] | |
{:status 200 | |
:headers {"content-type" "text/html"} | |
:body (str "<html><body>" req "</body></html>")}) | |
(defn message | |
[req] | |
{:status 200 | |
:body (if-let [{session :session} req] | |
(messaging/msg-receive session) | |
["didn't find a session"])}) | |
;;;; routes and server | |
(defroutes main-routes | |
(GET "/" [req] (index req)) | |
(GET "/test" [req] (test-page req)) | |
(wrap-transit-json-response | |
(POST "/message" req (message req))) | |
(route/resources "/") | |
(route/not-found "Page not found")) | |
(def app | |
(-> (handler/site main-routes) | |
; (wrap-defaults site-defaults) | |
; (wrap-reload {:dirs ["clj"]}) | |
(wrap-content-type) | |
; (wrap-anti-forgery) | |
(wrap-params) | |
(wrap-keyword-params) | |
(wrap-session))) | |
;;;;;; | |
(def config {:adapter/jetty {:port 3000}}) | |
(defmethod ig/init-key :adapter/jetty [_ {:keys [port] :as opts}] | |
(jetty/run-jetty app {:port port :join? false})) | |
;;(defmethod ig/init-key :messaging/state [_ _] | |
;; (fn [_] {})) | |
(defmethod ig/halt-key! :adapter/jetty [_ server] | |
(.stop server)) | |
(comment | |
(def system (ig/init config)) | |
(ig/halt! system) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment