From 5aac69f5634b9f2317d9ace040a59b191f98e304 Mon Sep 17 00:00:00 2001 From: Matt Russell Date: Thu, 12 Dec 2019 22:29:17 +0000 Subject: [PATCH 1/2] Add metosin/ring-http-response support to exception middleware. --- .../src/reitit/ring/middleware/exception.clj | 4 +++- project.clj | 2 ++ test/clj/reitit/ring/middleware/exception_test.clj | 13 ++++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj b/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj index 62a9a03c..7b286b58 100644 --- a/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj +++ b/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj @@ -2,7 +2,8 @@ (:require [reitit.coercion :as coercion] [reitit.ring :as ring] [clojure.spec.alpha :as s] - [clojure.string :as str]) + [clojure.string :as str] + [ring.util.http-response :as http-response]) (:import (java.time Instant) (java.io PrintWriter))) @@ -98,6 +99,7 @@ (def default-handlers {::default default-handler ::ring/response http-response-handler + ::http-response/response http-response-handler :muuntaja/decode request-parsing-handler ::coercion/request-coercion (create-coercion-handler 400) ::coercion/response-coercion (create-coercion-handler 500)}) diff --git a/project.clj b/project.clj index 90125dd9..409a1a39 100644 --- a/project.clj +++ b/project.clj @@ -26,6 +26,7 @@ [metosin/reitit-frontend "0.3.10"] [metosin/reitit-sieppari "0.3.10"] [metosin/reitit-pedestal "0.3.10"] + [metosin/ring-http-response "0.9.1"] [metosin/ring-swagger-ui "2.2.10"] [metosin/spec-tools "0.10.0"] [metosin/schema-tools "0.12.0"] @@ -90,6 +91,7 @@ [ring "1.7.1"] [ikitommi/immutant-web "3.0.0-alpha1"] [metosin/ring-swagger-ui "2.2.10"] + [metosin/ring-http-response "0.9.1"] [metosin/muuntaja] [metosin/sieppari] [metosin/jsonista] diff --git a/test/clj/reitit/ring/middleware/exception_test.clj b/test/clj/reitit/ring/middleware/exception_test.clj index 8414a020..5ef64770 100644 --- a/test/clj/reitit/ring/middleware/exception_test.clj +++ b/test/clj/reitit/ring/middleware/exception_test.clj @@ -6,7 +6,8 @@ [clojure.spec.alpha :as s] [reitit.coercion.spec] [reitit.ring.coercion] - [muuntaja.core :as m]) + [muuntaja.core :as m] + [ring.util.http-response :as http-response]) (:import (java.sql SQLException SQLWarning))) (derive ::kikka ::kukka) @@ -20,6 +21,9 @@ (ring/router [["/defaults" {:handler f}] + ["/http-response" + {:handler (fn [req] + (http-response/unauthorized! "Unauthorized"))}] ["/coercion" {:middleware [reitit.ring.coercion/coerce-request-middleware reitit.ring.coercion/coerce-response-middleware] @@ -56,6 +60,13 @@ app (create (fn [_] (throw (ex-info "fail" {:type ::ring/response, :response response}))))] (is (= response (app {:request-method :get, :uri "/defaults"}))))) + (testing "::ring.util.http-response/response" + (let [response {:status 401 :body "Unauthorized" :headers {}} + app (create (fn [_] (throw (ex-info "Unauthorized!" {:type ::http-response/response + :response response}))))] + (is (= response (app {:request-method :post, :uri "/http-response"}))))) + + (testing ":muuntaja/decode" (let [app (create (fn [_] (m/decode m/instance "application/json" "{:so \"invalid\"}")))] (is (= {:body "Malformed \"application/json\" request." From b648c73dcb4ea78fc9237ba0e966869c864ee3c1 Mon Sep 17 00:00:00 2001 From: Matt Russell Date: Fri, 13 Dec 2019 10:39:24 +0000 Subject: [PATCH 2/2] Removed hard dependency on metosin/ring-http-response. Use fully-qualified keyword rather referring via required alias, avoiding adding dependency. --- .../src/reitit/ring/middleware/exception.clj | 5 ++--- project.clj | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj b/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj index 7b286b58..92bbdec5 100644 --- a/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj +++ b/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj @@ -2,8 +2,7 @@ (:require [reitit.coercion :as coercion] [reitit.ring :as ring] [clojure.spec.alpha :as s] - [clojure.string :as str] - [ring.util.http-response :as http-response]) + [clojure.string :as str]) (:import (java.time Instant) (java.io PrintWriter))) @@ -99,7 +98,7 @@ (def default-handlers {::default default-handler ::ring/response http-response-handler - ::http-response/response http-response-handler + :ring.util.http-response/response http-response-handler :muuntaja/decode request-parsing-handler ::coercion/request-coercion (create-coercion-handler 400) ::coercion/response-coercion (create-coercion-handler 500)}) diff --git a/project.clj b/project.clj index 409a1a39..e1e1e975 100644 --- a/project.clj +++ b/project.clj @@ -26,7 +26,6 @@ [metosin/reitit-frontend "0.3.10"] [metosin/reitit-sieppari "0.3.10"] [metosin/reitit-pedestal "0.3.10"] - [metosin/ring-http-response "0.9.1"] [metosin/ring-swagger-ui "2.2.10"] [metosin/spec-tools "0.10.0"] [metosin/schema-tools "0.12.0"] @@ -90,8 +89,8 @@ [ring "1.7.1"] [ikitommi/immutant-web "3.0.0-alpha1"] - [metosin/ring-swagger-ui "2.2.10"] [metosin/ring-http-response "0.9.1"] + [metosin/ring-swagger-ui "2.2.10"] [metosin/muuntaja] [metosin/sieppari] [metosin/jsonista]