 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;; Middleware
 
-(schema/defn wrap-request-logging :- IFn
+(schema/defn ^:always-validate wrap-request-logging :- IFn
   "A ring middleware that logs the request."
   [handler :- IFn]
   (fn [{:keys [request-method uri] :as req}]

         (common/proxy-request req proxied-path remote-uri-base http-opts)
         (handler req))))))

(schema/defn wrap-add-cache-headers :- IFn
  "Adds cache control invalidation headers to GET and PUT requests if they are handled by the handler"
  [handler :- IFn]
  (fn [request]

      (log/trace "Computed response:" resp)
      resp)))

(schema/defn ^:always-validate wrap-proxy :- IFn
  "Proxies requests to proxied-path, a local URI, to the remote URI at
  remote-uri-base, also a string."
  [handler :- IFn
   proxied-path :- (schema/either Pattern schema/Str)
   remote-uri-base :- schema/Str
   & [http-opts]]
  (let [proxied-path (if (instance? Pattern proxied-path)
