mirror of
https://github.com/penpot/penpot.git
synced 2025-06-04 04:01:41 +02:00
feat(backend): enable proper multipart handling
This commit is contained in:
parent
57568f9614
commit
04a054474f
1 changed files with 20 additions and 12 deletions
|
@ -15,6 +15,7 @@
|
||||||
[reitit.ring.middleware.exception :as exception]
|
[reitit.ring.middleware.exception :as exception]
|
||||||
[ring.middleware.session :refer [wrap-session]]
|
[ring.middleware.session :refer [wrap-session]]
|
||||||
[ring.middleware.session.cookie :refer [cookie-store]]
|
[ring.middleware.session.cookie :refer [cookie-store]]
|
||||||
|
[ring.middleware.multipart-params :refer [wrap-multipart-params]]
|
||||||
[struct.core :as st]
|
[struct.core :as st]
|
||||||
[uxbox.api.errors :as api-errors]
|
[uxbox.api.errors :as api-errors]
|
||||||
[uxbox.util.data :refer [normalize-attrs]]
|
[uxbox.util.data :refer [normalize-attrs]]
|
||||||
|
@ -37,20 +38,26 @@
|
||||||
(def ^:private normalize-params-middleware
|
(def ^:private normalize-params-middleware
|
||||||
{:name ::normalize-params-middleware
|
{:name ::normalize-params-middleware
|
||||||
:wrap (fn [handler]
|
:wrap (fn [handler]
|
||||||
(letfn [(transform-request [request]
|
(letfn [(transform-request [request key]
|
||||||
(if-let [data (get request :query-params)]
|
(if-let [data (get request key)]
|
||||||
(assoc request :query-params (normalize-attrs data))
|
(assoc request key (normalize-attrs data))
|
||||||
request))]
|
request))
|
||||||
|
(transform [request]
|
||||||
|
(-> request
|
||||||
|
(transform-request :query-params)
|
||||||
|
(transform-request :multipart-params)))]
|
||||||
(fn
|
(fn
|
||||||
([request] (handler (transform-request request)))
|
([request] (handler (transform request)))
|
||||||
([request respond raise]
|
([request respond raise]
|
||||||
(try
|
(try
|
||||||
(try
|
(try
|
||||||
(let [request (transform-request request)]
|
(handler (transform request) respond raise)
|
||||||
(handler (transform-request request) respond raise))
|
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
(raise e))))))))})
|
(raise e))))))))})
|
||||||
|
|
||||||
|
(def ^:private multipart-params-middleware
|
||||||
|
{:name ::multipart-params-middleware
|
||||||
|
:wrap wrap-multipart-params})
|
||||||
|
|
||||||
(def ^:private parameters-validation-middleware
|
(def ^:private parameters-validation-middleware
|
||||||
(letfn [(prepare [parameters]
|
(letfn [(prepare [parameters]
|
||||||
|
@ -60,6 +67,7 @@
|
||||||
:path :path-params
|
:path :path-params
|
||||||
:query :query-params
|
:query :query-params
|
||||||
:body :body-params
|
:body :body-params
|
||||||
|
:multipart :multipart-params
|
||||||
(throw (ex-info "Not supported key on :parameters" {})))]
|
(throw (ex-info "Not supported key on :parameters" {})))]
|
||||||
(assoc acc newkey {:key key
|
(assoc acc newkey {:key key
|
||||||
:fn #(st/validate % spec)})))
|
:fn #(st/validate % spec)})))
|
||||||
|
@ -128,8 +136,6 @@
|
||||||
:data {:muuntaja muuntaja-instance
|
:data {:muuntaja muuntaja-instance
|
||||||
:middleware [session-middleware
|
:middleware [session-middleware
|
||||||
parameters/parameters-middleware
|
parameters/parameters-middleware
|
||||||
normalize-params-middleware
|
|
||||||
;; content-negotiation
|
|
||||||
muuntaja/format-negotiate-middleware
|
muuntaja/format-negotiate-middleware
|
||||||
;; encoding response body
|
;; encoding response body
|
||||||
muuntaja/format-response-middleware
|
muuntaja/format-response-middleware
|
||||||
|
@ -137,10 +143,12 @@
|
||||||
exception-middleware
|
exception-middleware
|
||||||
;; decoding request body
|
;; decoding request body
|
||||||
muuntaja/format-request-middleware
|
muuntaja/format-request-middleware
|
||||||
;; validation
|
|
||||||
parameters-validation-middleware
|
|
||||||
;; multipart
|
;; multipart
|
||||||
multipart/multipart-middleware]}})
|
multipart-params-middleware
|
||||||
|
;; parameters normalization
|
||||||
|
normalize-params-middleware
|
||||||
|
;; parameters validation
|
||||||
|
parameters-validation-middleware]}})
|
||||||
|
|
||||||
(defn handler
|
(defn handler
|
||||||
[invar]
|
[invar]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue