liberator icon indicating copy to clipboard operation
liberator copied to clipboard

The decisions page should provide details about implementing decisions

Open holyjak opened this issue 3 years ago • 3 comments

http://clojure-liberator.github.io/liberator/doc/decisions.html should include something like

BTW, where does the source for the page live? I do not see it in this repo.

Implementing a decision

A decision is a (fn [{:keys [request resource] :as context}] ...) that is expected to return a truthy value. In addition, it can also update the context - if the returned value is a map then it is merged into the context, if it is a function than the context is passed through it, if it is a vector then its second element is checked for being a map/function. Example:

(defresource foo
  :allowed-methods [:get]
  :allowed? (fn [{:keys [request resource]}]
              (let [user (my/fetch-user! request)]
                (when (my/authorized? user resource)
                  {::user user})))
  :handle-ok (fn [ctx]
               (log/info "user" (-> ctx ::user :name) "accessed foo")
               (foo/get (:request ctx))))```

holyjak avatar Sep 22 '21 17:09 holyjak

This is a very good idea. I'll happily merge a patch if you mind creating a PR. The docs are in the gh-pages branch of the repository, use this branch as the target for your PR.

ordnungswidrig avatar Sep 24 '21 06:09 ordnungswidrig

Done in #322

holyjak avatar Sep 28 '21 13:09 holyjak

@ordnungswidrig can we merge #322 and close this? Or do you want any changes? Thank you!

holyjak avatar Oct 08 '21 19:10 holyjak