juxt / bidi

Bidirectional URI routing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

filesmaybe missing

awb99 opened this issue · comments

commented

filesmaybe is useful as well.
I modelled it after resourcesMaybe

(defrecord FilesMaybe [options]
  bidi/Matched
  (resolve-handler [this m]
    (let [reminder (url-decode (:remainder m))
          filename (str (:dir options) reminder)]
      ;(warn "file-maybe: " filename)
      (when (.exists (io/file filename))
        ;(warn "file found: " filename)
        (assoc (dissoc m :remainder)
               :handler (->
                         (fn [req] (file-response reminder
                                                  {:root (:dir options)}))
                         (wrap-content-type options)
                         (wrap-not-modified))))))
  (unresolve-handler [this m]
    (when (= this (:handler m)) "")))