(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))))