move app config to separate module with main

This commit is contained in:
Bart Akeley 2017-10-30 20:34:16 -05:00
parent 842e78daef
commit 16bcc4de5d
4 changed files with 49 additions and 39 deletions

View file

@ -1 +1 @@
web: lein ring server-headless web: java $JVM_OPTS -cp target/aretherecookies.jar aretherecookies.app

View file

@ -2,21 +2,20 @@
:description "where cookies can be found" :description "where cookies can be found"
:url "http://www.aretherecookies.com" :url "http://www.aretherecookies.com"
:min-lein-version "2.0.0" :min-lein-version "2.0.0"
:main aretherecookies.handler :main aretherecookies.app
:dependencies [ :dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/clojure "1.8.0"] [environ "1.1.0"]
[environ "1.1.0"] [compojure "1.5.1"]
[compojure "1.5.1"] [ring/ring-defaults "0.2.1"]
[ring/ring-defaults "0.2.1"] [org.clojure/java.jdbc "0.7.3"]
[org.clojure/java.jdbc "0.7.3"] [org.postgresql/postgresql "42.1.4"]
[org.postgresql/postgresql "42.1.4"] [com.mchange/c3p0 "0.9.5.2"]
[com.mchange/c3p0 "0.9.5.2"] [ring-middleware-format "0.7.2"]
[ring-middleware-format "0.7.2"] [org.clojure/data.json "0.2.6"]
[org.clojure/data.json "0.2.6"] [ring/ring-json "0.4.0"]
[ring/ring-json "0.4.0"] [ring/ring-jetty-adapter "1.4.0"]]
]
:plugins [[lein-ring "0.9.7"] [lein-environ "1.1.0"]] :plugins [[lein-ring "0.9.7"] [lein-environ "1.1.0"]]
:ring {:handler aretherecookies.handler/app} :ring {:handler aretherecookies.app/app}
:profiles :profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"] {:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring/ring-mock "0.3.0"]]} [ring/ring-mock "0.3.0"]]}

View file

@ -0,0 +1,15 @@
(ns aretherecookies.app
(:gen-class)
(:require [aretherecookies.handler :refer [app-routes]]
[environ.core :refer [env]]
[compojure.handler :refer [site]]
[ring.adapter.jetty :as jetty]
[ring.middleware.defaults :refer [wrap-defaults api-defaults]]))
(def app-config (assoc-in api-defaults [:security :anti-forgery] false))
(def app (wrap-defaults app-routes app-config))
(defn -main [& [port]]
(let [port (Integer. (or port (env :port) 3000))]
(jetty/run-jetty (site #'app) {:port port :join? false})))

View file

@ -2,7 +2,6 @@
(:require [aretherecookies.db :refer [query-food-items build-fooditems-query]] (:require [aretherecookies.db :refer [query-food-items build-fooditems-query]]
[compojure.core :refer :all] [compojure.core :refer :all]
[compojure.route :as route] [compojure.route :as route]
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]
[clojure.data.json :as json] [clojure.data.json :as json]
[clojure.string :as str] [clojure.string :as str]
[ring.middleware.anti-forgery :refer :all] [ring.middleware.anti-forgery :refer :all]
@ -11,14 +10,14 @@
(defn uuid-to-string [key value] (defn uuid-to-string [key value]
(if (instance? java.util.UUID value) (.toString value) value)) (if (instance? java.util.UUID value) (.toString value) value))
(defn get-coords [item] (defn get-coords [item]
(-> (->
item item
(get :location) (get :location)
json/read-str json/read-str
(get "coordinates"))) (get "coordinates")))
(defn build-lat-lng [[lng lat]] (defn build-lat-lng [[lng lat]]
(hash-map :longitude lng :latitude lat)) (hash-map :longitude lng :latitude lat))
(defn build-latlng [item] (defn build-latlng [item]
@ -26,32 +25,29 @@
(hash-map :longitude lng :latitude lat))) (hash-map :longitude lng :latitude lat)))
(defn parse-location [item] (defn parse-location [item]
(-> (->
item item
build-latlng build-latlng
(merge item) (merge item)
(dissoc :location))) (dissoc :location)))
(defn food-items-to-json [query-result] (defn food-items-to-json [query-result]
(map parse-location query-result)) (map parse-location query-result))
(defn food-items-handler [req] (defn food-items-handler [req]
(println "req---->" (:body req)) (println "req---->" (:body req))
(let [{{lat "lat" lng "lng" filter "filter" orderby "orderby"} :body} req] (let [{{lat "lat" lng "lng" filter "filter" orderby "orderby"} :body} req]
(json/write-str (json/write-str
(hash-map (hash-map
:orderby orderby :orderby orderby
:filter filter :filter filter
:fooditems (food-items-to-json :fooditems (food-items-to-json
(query-food-items (build-fooditems-query lng lat (get filter "radius"))))) (query-food-items (build-fooditems-query lng lat (get filter "radius")))))
:value-fn uuid-to-string))) :value-fn uuid-to-string)))
(defroutes app-routes (defroutes app-routes
(GET "/" [] (str {:csrf-token (GET "/" [] (str {:csrf-token
*anti-forgery-token*})) *anti-forgery-token*}))
(POST "/test" req "ok") (POST "/test" req "ok")
(POST "/fooditems" req (wrap-json-body food-items-handler)) (POST "/fooditems" req (wrap-json-body food-items-handler))
(GET "/echo" [location orderby filter] (str location orderby filter))) (GET "/echo" [location orderby filter] (str location orderby filter)))
(def app
(wrap-defaults app-routes (assoc-in site-defaults [:security :anti-forgery] false)))