   [data _]
   (sz/encode data :transit+json))
 
-(defmethod decode :default
-  [_ _]
-  nil)
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Implementation
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defn- get-content-type
-  [^TypedData body]
-  (let [^String content-type (.. body getContentType getType)]
+  [context]
+  (let [^TypedData body (:body context)
+        ^String content-type (.. body getContentType getType)]
     (when content-type
       (keyword (.toLowerCase content-type)))))
 

   (router handler {}))
  ([handler options]
   (fn [context]
     (let [body (:body context)
           data (.getBytes ^TypedData (:body context))
           content-type (get-content-type body)
           frame (exc/try-on (decode data content-type))]
       (if (and (exc/success? frame) (not (nil? @frame)))
         (dispatch handler context content-type @frame)
         (http/unsupported-mediatype (str (m/extract frame))))))))

          (encode content-type)
          (frame->http content-type)))))

(defn- get-incoming-data
  [context]
  (if (= (:method context) :get)
    (let [data (get-in context [:query-params :d] nil)]
      (codecs/safebase64->bytes data))
    (.getBytes ^TypedData (:body context))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Public Api
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
