Advertisement
Guest User

Untitled

a guest
Dec 4th, 2015
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. (ns crisco.web
  2. (:require [compojure.core :refer [defroutes GET PUT POST DELETE ANY]]
  3. [compojure.handler :refer [site]]
  4. [compojure.route :as route]
  5. [clojure.java.io :as io]
  6. [ring.middleware.stacktrace :as trace]
  7. [ring.middleware.session :as session]
  8. [ring.middleware.session.cookie :as cookie]
  9. [ring.adapter.jetty :as jetty]
  10. [ring.middleware.basic-authentication :as basic]
  11. [cemerick.drawbridge :as drawbridge]
  12. [environ.core :refer [env]]))
  13.  
  14. (defn- authenticated? [user pass]
  15. ;; TODO: heroku config:add REPL_USER=[...] REPL_PASSWORD=[...]
  16. (= [user pass] [(env :repl-user false) (env :repl-password false)]))
  17.  
  18. (def ^:private drawbridge
  19. (-> (drawbridge/ring-handler)
  20. (session/wrap-session)
  21. (basic/wrap-basic-authentication authenticated?)))
  22.  
  23. (defroutes app
  24. (ANY "/repl" {:as req}
  25. (drawbridge req))
  26. (GET "/" []
  27. {:status 200
  28. :headers {"Content-Type" "text/plain"}
  29. :body (pr-str ["Hello" :from 'Heroku])})
  30. (ANY "*" []
  31. (route/not-found (slurp (io/resource "404.html")))))
  32.  
  33. (defn wrap-error-page [handler]
  34. (fn [req]
  35. (try (handler req)
  36. (catch Exception e
  37. {:status 500
  38. :headers {"Content-Type" "text/html"}
  39. :body (slurp (io/resource "500.html"))}))))
  40.  
  41. (defn wrap-app [app]
  42. ;; TODO: heroku config:add SESSION_SECRET=$RANDOM_16_CHARS
  43. (let [store (cookie/cookie-store {:key (env :session-secret)})]
  44. (-> app
  45. ((if (env :production)
  46. wrap-error-page
  47. trace/wrap-stacktrace))
  48. (site {:session {:store store}}))))
  49.  
  50. (defn -main [& [port]]
  51. (let [port (Integer. (or port (env :port) 5000))]
  52. (jetty/run-jetty (wrap-app #'app) {:port port :join? false})))
  53.  
  54. ;; For interactive development:
  55. ;; (.stop server)
  56. ;; (def server (-main))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement