diff --git a/backend/deps.edn b/backend/deps.edn index 166dbee5d7..97a4b0f24d 100644 --- a/backend/deps.edn +++ b/backend/deps.edn @@ -13,7 +13,7 @@ metosin/reitit-ring {:mvn/version "0.3.7"} metosin/reitit-middleware {:mvn/version "0.3.7"} metosin/reitit-spec {:mvn/version "0.3.7"} - ;; metosin/reitit-dev {:mvn/version "0.3.7"} + metosin/reitit-dev {:mvn/version "0.3.7"} org.jsoup/jsoup {:mvn/version "1.10.2"} hiccup/hiccup {:mvn/version "1.0.5"} diff --git a/backend/src/uxbox/api/errors.clj b/backend/src/uxbox/api/errors.clj index 42e69a1e6e..45cec6cdd2 100644 --- a/backend/src/uxbox/api/errors.clj +++ b/backend/src/uxbox/api/errors.clj @@ -5,26 +5,18 @@ ;; Copyright (c) 20162019 Andrey Antukh (ns uxbox.api.errors - "A errors handling for api." - (:require [reitit.ring.middleware.exception :as exception])) - + "A errors handling for api.") (defmulti handle-exception #(:type (ex-data %))) (defmethod handle-exception :validation [err] - ;; (println "\n*********** stack trace ***********") - ;; (.printStackTrace err) - ;; (println "\n********* end stack trace *********") (let [response (ex-data err)] {:status 400 :body response})) (defmethod handle-exception :default [err] - ;; (println "\n*********** stack trace ***********") - ;; (.printStackTrace err) - ;; (println "\n********* end stack trace *********") (let [response (ex-data err)] {:status 500 :body response})) @@ -78,9 +70,3 @@ (.printStackTrace error) (println "\n********* end stack trace *********") (handler error request)) - -(def exception-middleware - (exception/create-exception-middleware - (assoc exception/default-handlers - ::exception/default errors-handler - ::exception/wrap wrap-print-errors))) diff --git a/backend/src/uxbox/api/middleware.clj b/backend/src/uxbox/api/middleware.clj index 63de3f70ff..db5115c6d0 100644 --- a/backend/src/uxbox/api/middleware.clj +++ b/backend/src/uxbox/api/middleware.clj @@ -8,9 +8,11 @@ (:require [muuntaja.core :as m] [promesa.core :as p] [reitit.core :as rc] + [reitit.dev.pretty :as pretty] [reitit.ring.middleware.multipart :as multipart] [reitit.ring.middleware.muuntaja :as muuntaja] [reitit.ring.middleware.parameters :as parameters] + [reitit.ring.middleware.exception :as exception] [ring.middleware.session :refer [wrap-session]] [ring.middleware.session.cookie :refer [cookie-store]] [struct.core :as st] @@ -68,7 +70,7 @@ (fn [req key spec] (let [[errors, result] ((:fn spec) (get req key))] (if errors - (ex/raise :type :parameters-validation + (ex/raise :type :validation :code (:key spec) :context errors :value (get req key) @@ -91,6 +93,8 @@ {:name ::parameters-validation-middleware :compile compile})) + + (def ^:private session-middleware (let [options {:store (cookie-store {:key "a 16-byte secret"}) :cookie-name "session" @@ -107,12 +111,20 @@ ;; "content-type" ;; "authorization"])}) +(def ^:private exception-middleware + (exception/create-exception-middleware + (assoc exception/default-handlers + ::exception/default api-errors/errors-handler + ::exception/wrap api-errors/wrap-print-errors))) + + (def ^:private muuntaja-instance (m/create (update-in m/default-options [:formats "application/transit+json"] merge {:encoder-opts {:handlers t/+write-handlers+} :decoder-opts {:handlers t/+read-handlers+}}))) (def router-options {;;:reitit.middleware/transform dev/print-request-diffs + :exception pretty/exception :data {:muuntaja muuntaja-instance :middleware [session-middleware parameters/parameters-middleware @@ -122,7 +134,7 @@ ;; encoding response body muuntaja/format-response-middleware ;; exception handling - api-errors/exception-middleware + exception-middleware ;; decoding request body muuntaja/format-request-middleware ;; validation