Skip to content

The decisions page should provide details about implementing decisions #321

@holyjak

Description

@holyjak

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))))```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions