<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent questions tagged reitit</title>
<link>https://ask.clojure.org/index.php/tag/reitit</link>
<description></description>
<item>
<title>Unmatched paren in Reitit example</title>
<link>https://ask.clojure.org/index.php/8875/unmatched-paren-in-reitit-example</link>
<description>&lt;p&gt;Hey! I'm getting an unmatched paren error on this function I got from reitit's example http-swagger project.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(def app
  (http/ring-handler
   (http/router
     [[&quot;/swagger.json&quot;
        {:get {:no-doc true
         :swagger {:info {:title &quot;my-api&quot;
                          :description &quot;with reitit-http&quot;}}
         :handler (swagger/create-swagger-handler)}}]

 [&quot;/files&quot;
  {:swagger {:tags [&quot;files&quot;]}}

  [&quot;/upload&quot;
   {:post {:summary &quot;upload a file&quot;
           :parameters {:multipart {:file multipart/temp-file-part}}
           :responses {200 {:body {:name string?, :size int?}}}
           :handler (fn [{{{:keys [file]} :multipart} :parameters}]
                      {:status 200
                       :body {:name (:filename file)
                              :size (:size file)}})}}]

 [&quot;/async&quot;
  {:get {:swagger {:tags [&quot;async&quot;]}
         :summary &quot;fetches random users asynchronously over the internet&quot;
         :parameters {:query (s/keys :req-un [::results] :opt-un [::seed])}
         :responses {200 {:body any?}}
         :handler (fn [{{{:keys [seed results]} :query} :parameters}]
                    (d/chain
                     (aleph/get
                      &quot;https://randomuser.me/api/&quot;
                      {:query-params {:seed seed, :results results}})
                     :body
                     (partial m/decode &quot;application/json&quot;)
                     :results
                     (fn [results]
                       {:status 200
                        :body results})))}}]

 [&quot;/math&quot;
  {:swagger {:tags [&quot;math&quot;]}}

  [&quot;/plus&quot;
   {:get {:summary &quot;plus with data-spec query parameters&quot;
          :parameters {:query {:x int?, :y int?}}
          :responses {200 {:body {:total pos-int?}}}
          :handler (fn [{{{:keys [x y]} :query} :parameters}]
                     {:status 200
                      :body {:total (+ x y)}})}
    :post {:summary &quot;plus with data-spec body parameters&quot;
           :parameters {:body {:x int?, :y int?}}
           :responses {200 {:body {:total int?}}}
           :handler (fn [{{{:keys [x y]} :body} :parameters}]
                      {:status 200
                       :body {:total (+ x y)}})}}]

  [&quot;/minus&quot;
   {:get {:summary &quot;minus with clojure.spec query parameters&quot;
          :parameters {:query (s/keys :req-un [::x ::y])}
          :responses {200 {:body (s/keys :req-un [::total])}}
          :handler (fn [{{{:keys [x y]} :query} :parameters}]
                     {:status 200
                      :body {:total (- x y)}})}
    :post {:summary &quot;minus with clojure.spec body parameters&quot;
           :parameters {:body (s/keys :req-un [::x ::y])}
           :responses {200 {:body (s/keys :req-un [::total])}}
           :handler (fn [{{{:keys [x y]} :body} :parameters}]
                      {:status 200
                       :body {:total (- x y)}})}}]]]

{:reitit.interceptor/transform dev/print-context-diffs ;; pretty context diffs
 :validate spec/validate ;; enable spec validation for route data
 :reitit.spec/wrap spell/closed ;; strict top-level validation
 :exception pretty/exception
 :data {:coercion reitit.coercion.spec/coercion
        :muuntaja m/instance
        :interceptors [;; swagger feature
                       swagger/swagger-feature
                       ;; query-params &amp;amp; form-params
                       (parameters/parameters-interceptor)
                       ;; content-negotiation
                       (muuntaja/format-negotiate-interceptor)
                       ;; encoding response body
                       (muuntaja/format-response-interceptor)
                       ;; exception handling
                       (exception/exception-interceptor)
                       ;; decoding request body
                       (muuntaja/format-request-interceptor)
                       ;; coercing response bodys
                       (coercion/coerce-response-interceptor)
                       ;; coercing request parameters
                       (coercion/coerce-request-interceptor)
                       ;; multipart
                       (multipart/multipart-interceptor)]}})
 (ring/routes
(swagger-ui/create-swagger-ui-handler
 {:path &quot;/&quot;
  :config {:validatorUrl nil
           :operationsSorter &quot;alpha&quot;}})
(ring/create-default-handler))
 {:executor sieppari/executor}))
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8875/unmatched-paren-in-reitit-example</guid>
<pubDate>Fri, 22 Nov 2019 01:46:08 +0000</pubDate>
</item>
</channel>
</rss>