Skip to content

Instantly share code, notes, and snippets.

@dustingetz
Created January 7, 2015 22:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dustingetz/dd012dc5fa12bc32b548 to your computer and use it in GitHub Desktop.
Save dustingetz/dd012dc5fa12bc32b548 to your computer and use it in GitHub Desktop.
(ns streaker-service.routes
  (:require [io.pedestal.http :as bootstrap]
            [io.pedestal.http.route :as route]
            [io.pedestal.http.body-params :as body-params]
            [io.pedestal.http.route.definition :refer [expand-routes]]
            [io.pedestal.interceptor :githuas interceptor :refer [defhandler]]
            [ring.util.response :as ring-resp]
            [streaker-service.api :as api]
            [streaker-service.page :as page]
            [streaker-service.pedestal-util :as pedestal-util]
            [streaker-service.models.question :as question]
            [streaker-service.models.friend :as friend]))


(defn api-get [req]
  (ring-resp/response
   (api/index)))


(defn mk-coll-get [coll-route item-route query typeinfo]
  (fn [{{:keys [tx]} :query-params}]
    (ring-resp/response
     (api/collection-read coll-route
                          item-route
                          query
                          typeinfo
                          (Long/parseLong tx)))))

(defn mk-coll-post [typeinfo]
  (fn [{:keys [:streaker-service.pedestal-util/body-params]}]
    (ring-resp/response
     (api/collection-create body-params typeinfo))))

(defn mk-item-get [item-route typeinfo]
  (fn [{{:keys [tx]} :query-params {:keys [id]} :path-params}]
    (ring-resp/response
     (api/entity-read item-route
                      (Long/parseLong id)
                      (Long/parseLong tx)
                      typeinfo))))

(defn route [root query typeinfo]
  (let [coll-route (keyword root)
        item-route (keyword root "item")
        coll-get-handler (mk-coll-get coll-route item-route query typeinfo)
        coll-post-handler (mk-coll-post typeinfo)
        item-get-handler (mk-item-get item-route typeinfo)]
    `~[(str "/" root) {:get [coll-route `(identity ~coll-get-handler)]
                       :post [(keyword root "post") `(identity ~coll-post-handler)]
                       }
       ["/:id" {:get [item-route `(identity ~item-get-handler)]}]]))


(def routes
  (expand-routes
   `[[["/echo" {:any page/echo}]
      ["/api" {:get api-get}
       ^:interceptors [(body-params/body-params)
                       pedestal-util/auto-content-type
                       pedestal-util/combine-body-params]

       ~(route "questions" '[:find ?e :where [?e :Question/text]] question/typeinfo)
       ;;~(route "friends" '[:find ?e :where [?e :Friend/email]] friend/typeinfo)

       ]]]))

  Show: Clojure Java REPL Tooling Duplicates All  (66 frames hidden)

3. Unhandled clojure.lang.Compiler$CompilerException
   Error compiling: routes.clj:55:3

                 Compiler.java: 3558  clojure.lang.Compiler$InvokeExpr/eval
                 Compiler.java:  417  clojure.lang.Compiler$DefExpr/eval
                 Compiler.java: 6708  clojure.lang.Compiler/eval
                 Compiler.java: 7130  clojure.lang.Compiler/load
                          REPL:    1  streaker-service.routes/eval19586
                 Compiler.java: 6703  clojure.lang.Compiler/eval
                 Compiler.java: 6666  clojure.lang.Compiler/eval
                      core.clj: 2927  clojure.core/eval
                      main.clj:  239  clojure.main/repl/read-eval-print/fn
                      main.clj:  239  clojure.main/repl/read-eval-print
                      main.clj:  257  clojure.main/repl/fn
                      main.clj:  257  clojure.main/repl
                   RestFn.java: 1523  clojure.lang.RestFn/invoke
        interruptible_eval.clj:   67  clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
                      AFn.java:  152  clojure.lang.AFn/applyToHelper
                      AFn.java:  144  clojure.lang.AFn/applyTo
                      core.clj:  624  clojure.core/apply
                      core.clj: 1862  clojure.core/with-bindings*
                   RestFn.java:  425  clojure.lang.RestFn/invoke
        interruptible_eval.clj:   51  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
        interruptible_eval.clj:  183  clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
        interruptible_eval.clj:  152  clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
                      AFn.java:   22  clojure.lang.AFn/run
       ThreadPoolExecutor.java: 1142  java.util.concurrent.ThreadPoolExecutor/runWorker
       ThreadPoolExecutor.java:  617  java.util.concurrent.ThreadPoolExecutor$Worker/run
                   Thread.java:  745  java.lang.Thread/run

2. Caused by java.lang.ExceptionInInitializerError
   (No message)

NativeConstructorAccessorImpl.java:   -2  sun.reflect.NativeConstructorAccessorImpl/newInstance0
NativeConstructorAccessorImpl.java:   62  sun.reflect.NativeConstructorAccessorImpl/newInstance
DelegatingConstructorAccessorImpl.java:   45  sun.reflect.DelegatingConstructorAccessorImpl/newInstance
              Constructor.java:  408  java.lang.reflect.Constructor/newInstance
                    Class.java:  433  java.lang.Class/newInstance
                 Compiler.java: 4764  clojure.lang.Compiler$ObjExpr/eval
                 Compiler.java: 6702  clojure.lang.Compiler/eval
                 Compiler.java: 6666  clojure.lang.Compiler/eval
                      core.clj: 2927  clojure.core/eval
                   verbose.clj:   32  io.pedestal.http.route.definition.verbose/resolve-interceptor
                   verbose.clj:   54  io.pedestal.http.route.definition.verbose/handler-map
                   verbose.clj:   83  io.pedestal.http.route.definition.verbose/generate-verb-terminal
                      AFn.java:  156  clojure.lang.AFn/applyToHelper
                      AFn.java:  144  clojure.lang.AFn/applyTo
                      core.clj:  626  clojure.core/apply
                      core.clj: 2468  clojure.core/partial/fn
                   RestFn.java:  408  clojure.lang.RestFn/invoke
                      core.clj: 2559  clojure.core/map/fn
                  LazySeq.java:   40  clojure.lang.LazySeq/sval
                  LazySeq.java:   49  clojure.lang.LazySeq/seq
                       RT.java:  484  clojure.lang.RT/seq
                      core.clj:  133  clojure.core/seq
                      core.clj:  685  clojure.core/concat/fn
                  LazySeq.java:   40  clojure.lang.LazySeq/sval
                  LazySeq.java:   56  clojure.lang.LazySeq/seq
                       RT.java:  484  clojure.lang.RT/seq
                      core.clj:  133  clojure.core/seq
                      core.clj: 2551  clojure.core/map/fn
                  LazySeq.java:   40  clojure.lang.LazySeq/sval
                  LazySeq.java:   49  clojure.lang.LazySeq/seq
                     Cons.java:   39  clojure.lang.Cons/next
                       RT.java:  598  clojure.lang.RT/next
                      core.clj:   64  clojure.core/next
                 protocols.clj:  146  clojure.core.protocols/fn
                 protocols.clj:   19  clojure.core.protocols/fn/G
                 protocols.clj:   31  clojure.core.protocols/seq-reduce
                 protocols.clj:   54  clojure.core.protocols/fn
                 protocols.clj:   13  clojure.core.protocols/fn/G
                      core.clj: 6289  clojure.core/reduce
                   verbose.clj:  154  io.pedestal.http.route.definition.verbose/prioritize-constraints
                   verbose.clj:  180  io.pedestal.http.route.definition.verbose/expand-verbose-routes
                definition.clj:  206  io.pedestal.http.route.definition/eval13746/fn
                definition.clj:  196  io.pedestal.http.route.definition/eval13725/fn/G
                      AFn.java:  154  clojure.lang.AFn/applyToHelper
                      AFn.java:  144  clojure.lang.AFn/applyTo
                 Compiler.java: 3553  clojure.lang.Compiler$InvokeExpr/eval
                 Compiler.java:  417  clojure.lang.Compiler$DefExpr/eval
                 Compiler.java: 6708  clojure.lang.Compiler/eval
                 Compiler.java: 7130  clojure.lang.Compiler/load
                          REPL:    1  streaker-service.routes/eval19586
                 Compiler.java: 6703  clojure.lang.Compiler/eval
                 Compiler.java: 6666  clojure.lang.Compiler/eval
                      core.clj: 2927  clojure.core/eval
                      main.clj:  239  clojure.main/repl/read-eval-print/fn
                      main.clj:  239  clojure.main/repl/read-eval-print
                      main.clj:  257  clojure.main/repl/fn
                      main.clj:  257  clojure.main/repl
                   RestFn.java: 1523  clojure.lang.RestFn/invoke
        interruptible_eval.clj:   67  clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
                      AFn.java:  152  clojure.lang.AFn/applyToHelper
                      AFn.java:  144  clojure.lang.AFn/applyTo
                      core.clj:  624  clojure.core/apply
                      core.clj: 1862  clojure.core/with-bindings*
                   RestFn.java:  425  clojure.lang.RestFn/invoke
        interruptible_eval.clj:   51  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
        interruptible_eval.clj:  183  clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
        interruptible_eval.clj:  152  clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
                      AFn.java:   22  clojure.lang.AFn/run
       ThreadPoolExecutor.java: 1142  java.util.concurrent.ThreadPoolExecutor/runWorker
       ThreadPoolExecutor.java:  617  java.util.concurrent.ThreadPoolExecutor$Worker/run
                   Thread.java:  745  java.lang.Thread/run

1. Caused by java.lang.IllegalArgumentException
   No matching ctor found for class
   streaker_service.routes$mk_coll_post$fn__19606

                Reflector.java:  163  clojure.lang.Reflector/invokeConstructor
               LispReader.java: 1043  clojure.lang.LispReader$EvalReader/invoke
               LispReader.java:  616  clojure.lang.LispReader$DispatchReader/invoke
               LispReader.java:  183  clojure.lang.LispReader/read
                       RT.java: 1737  clojure.lang.RT/readString
                    routes.clj:   54  streaker-service.routes/eval19620
NativeConstructorAccessorImpl.java:   -2  sun.reflect.NativeConstructorAccessorImpl/newInstance0
NativeConstructorAccessorImpl.java:   62  sun.reflect.NativeConstructorAccessorImpl/newInstance
DelegatingConstructorAccessorImpl.java:   45  sun.reflect.DelegatingConstructorAccessorImpl/newInstance
              Constructor.java:  408  java.lang.reflect.Constructor/newInstance
                    Class.java:  433  java.lang.Class/newInstance
                 Compiler.java: 4764  clojure.lang.Compiler$ObjExpr/eval
                 Compiler.java: 6702  clojure.lang.Compiler/eval
                 Compiler.java: 6666  clojure.lang.Compiler/eval
                      core.clj: 2927  clojure.core/eval
                   verbose.clj:   32  io.pedestal.http.route.definition.verbose/resolve-interceptor
                   verbose.clj:   54  io.pedestal.http.route.definition.verbose/handler-map
                   verbose.clj:   83  io.pedestal.http.route.definition.verbose/generate-verb-terminal
                      AFn.java:  156  clojure.lang.AFn/applyToHelper
                      AFn.java:  144  clojure.lang.AFn/applyTo
                      core.clj:  626  clojure.core/apply
                      core.clj: 2468  clojure.core/partial/fn
                   RestFn.java:  408  clojure.lang.RestFn/invoke
                      core.clj: 2559  clojure.core/map/fn
                  LazySeq.java:   40  clojure.lang.LazySeq/sval
                  LazySeq.java:   49  clojure.lang.LazySeq/seq
                       RT.java:  484  clojure.lang.RT/seq
                      core.clj:  133  clojure.core/seq
                      core.clj:  685  clojure.core/concat/fn
                  LazySeq.java:   40  clojure.lang.LazySeq/sval
                  LazySeq.java:   56  clojure.lang.LazySeq/seq
                       RT.java:  484  clojure.lang.RT/seq
                      core.clj:  133  clojure.core/seq
                      core.clj: 2551  clojure.core/map/fn
                  LazySeq.java:   40  clojure.lang.LazySeq/sval
                  LazySeq.java:   49  clojure.lang.LazySeq/seq
                     Cons.java:   39  clojure.lang.Cons/next
                       RT.java:  598  clojure.lang.RT/next
                      core.clj:   64  clojure.core/next
                 protocols.clj:  146  clojure.core.protocols/fn
                 protocols.clj:   19  clojure.core.protocols/fn/G
                 protocols.clj:   31  clojure.core.protocols/seq-reduce
                 protocols.clj:   54  clojure.core.protocols/fn
                 protocols.clj:   13  clojure.core.protocols/fn/G
                      core.clj: 6289  clojure.core/reduce
                   verbose.clj:  154  io.pedestal.http.route.definition.verbose/prioritize-constraints
                   verbose.clj:  180  io.pedestal.http.route.definition.verbose/expand-verbose-routes
                definition.clj:  206  io.pedestal.http.route.definition/eval13746/fn
                definition.clj:  196  io.pedestal.http.route.definition/eval13725/fn/G
                      AFn.java:  154  clojure.lang.AFn/applyToHelper
                      AFn.java:  144  clojure.lang.AFn/applyTo
                 Compiler.java: 3553  clojure.lang.Compiler$InvokeExpr/eval
                 Compiler.java:  417  clojure.lang.Compiler$DefExpr/eval
                 Compiler.java: 6708  clojure.lang.Compiler/eval
                 Compiler.java: 7130  clojure.lang.Compiler/load
                          REPL:    1  streaker-service.routes/eval19586
                 Compiler.java: 6703  clojure.lang.Compiler/eval
                 Compiler.java: 6666  clojure.lang.Compiler/eval
                      core.clj: 2927  clojure.core/eval
                      main.clj:  239  clojure.main/repl/read-eval-print/fn
                      main.clj:  239  clojure.main/repl/read-eval-print
                      main.clj:  257  clojure.main/repl/fn
                      main.clj:  257  clojure.main/repl
                   RestFn.java: 1523  clojure.lang.RestFn/invoke
        interruptible_eval.clj:   67  clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
                      AFn.java:  152  clojure.lang.AFn/applyToHelper
                      AFn.java:  144  clojure.lang.AFn/applyTo
                      core.clj:  624  clojure.core/apply
                      core.clj: 1862  clojure.core/with-bindings*
                   RestFn.java:  425  clojure.lang.RestFn/invoke
        interruptible_eval.clj:   51  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
        interruptible_eval.clj:  183  clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
        interruptible_eval.clj:  152  clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
                      AFn.java:   22  clojure.lang.AFn/run
       ThreadPoolExecutor.java: 1142  java.util.concurrent.ThreadPoolExecutor/runWorker
       ThreadPoolExecutor.java:  617  java.util.concurrent.ThreadPoolExecutor$Worker/run
                   Thread.java:  745  java.lang.Thread/run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment