Files
integreat/src/clj/auto_ap/handler.clj
2017-12-08 08:01:37 -08:00

48 lines
1.8 KiB
Clojure

(ns auto-ap.handler
(:require [compojure.core :refer :all]
[compojure.route :as route]
[clojure.java.io :as io]
[clojure.string :as str]
[auto-ap.db.invoices :as invoices]
[auto-ap.parse :as parse]
[ring.middleware.multipart-params :as mp]
[ring.util.response :as response]
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]
[ring.middleware.reload :refer [wrap-reload]]
[ring.middleware.json :refer [wrap-json-response]]
[ring.middleware.edn :refer [wrap-edn-params]]
[clojure.java.jdbc :as j]))
(defroutes app-routes
(GET "/" [] (response/resource-response "index.html" {:root "public"}))
(GET "/api/invoices" []
{:status 200
:body (pr-str (invoices/get-all))
:headers {"Content-Type" "application/edn"}})
(GET "/api/invoices/pending" []
{:status 200
:body (pr-str (invoices/get-pending))
:headers {"Content-Type" "application/edn"}})
(POST "/api/invoices" {:keys [edn-params]}
(invoices/insert-multi! (:rows edn-params))
{:status 200
:body (pr-str (invoices/get-all))
:headers {"Content-Type" "application/edn"}})
(POST "/pdf-upload"
{{ files "file"} :params :as params}
(let [{:keys [filename tempfile]} files]
(for [{:keys [total date invoice-number customer-identifier]}
(parse/parse-file (.getPath tempfile))]
{"customer-identifier" customer-identifier
"invoice-number" invoice-number
"date" date
"total" total})))
(route/resources "/")
(routes (ANY "*" [] (response/resource-response "index.html" {:root "public"})))
(route/not-found "Not Found"))
(def app
(wrap-edn-params (mp/wrap-multipart-params (wrap-reload app-routes))))