diff options
author | grfn <grfn@gws.fyi> | 2021-04-30T11·51+0000 |
---|---|---|
committer | grfn <grfn@gws.fyi> | 2021-04-30T11·54+0000 |
commit | 17239c597df554b9fe182e6a5a5b0d160217511e (patch) | |
tree | b5bddd753860b40f9bc9311fcdf08b57c2cec67f /web | |
parent | 216c3f73b97d8ff9db7932bb16226315edfac4fc (diff) |
revert: "feat(web/panettone): Allow requesting JSON" r/2553
This reverts commit 77c09076eccf343e7f14ed389719c0866de3d649. Reason for revert: It doesn't work - attempting to request any of the pages now gives: [ERROR]] No keys match in SWITCH. Testing against "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" with EQUAL. Change-Id: Ic4c795fd2a971003a6823a3b68ddee9a03b9f7c9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3061 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
Diffstat (limited to 'web')
-rw-r--r-- | web/panettone/src/packages.lisp | 4 | ||||
-rw-r--r-- | web/panettone/src/panettone.lisp | 41 |
2 files changed, 4 insertions, 41 deletions
diff --git a/web/panettone/src/packages.lisp b/web/panettone/src/packages.lisp index a428c188c050..3e6aa4a05f4f 100644 --- a/web/panettone/src/packages.lisp +++ b/web/panettone/src/packages.lisp @@ -69,11 +69,9 @@ :panettone.authentication :panettone.inline-markdown) (:import-from :defclass-std :defclass/std) - (:import-from :alexandria :if-let :when-let :switch :alist-hash-table - :assoc-value :eswitch) + (:import-from :alexandria :if-let :when-let :switch :alist-hash-table) (:import-from :cl-ppcre :split) (:import-from :bordeaux-threads :make-thread) - (:import-from :cl-json :encode-json :encode-json-to-string) (:import-from :panettone.model :id :subject :body :author-dn :issue-id :status :created-at diff --git a/web/panettone/src/panettone.lisp b/web/panettone/src/panettone.lisp index d6713407a57d..3d803e1fb6a9 100644 --- a/web/panettone/src/panettone.lisp +++ b/web/panettone/src/panettone.lisp @@ -51,42 +51,11 @@ (values)) ;;; -;;; Responses -;;; - -(defun request-format () - "Returns the content type requested by the current hunchentoot request as a -symbol equal to either `:html' or `:json', defaulting to `:html' if not -specified." - (eswitch ((hunchentoot:header-in* :accept) :test #'equal) - ("application/json" :json) - ("text/html" :html) - ("*/*" :html))) - -(defun format->mime (format) - (ecase format - (:json "application/json") - (:html "text/html"))) - -(defmacro format-case (&rest clauses) - "Execute the cdr of the element in CLAUSES whose car is equal to the current -request format, a symbol that can be either `:JSON' or `:HTML'" - (let ((format (gensym "format"))) - `(let ((,format (request-format))) - (setf (hunchentoot:content-type*) (format->mime ,format)) - (case ,format ,@clauses)))) - -(defmethod encode-json ((ts local-time:timestamp) - &optional (stream json:*json-output*)) - (encode-json (local-time:format-rfc3339-timestring - nil ts) - stream)) - -;;; ;;; Views ;;; (defvar *title* "Panettone") + (setf (who:html-mode) :html5) (defun render/nav () @@ -500,9 +469,7 @@ given subject an body (in a thread, to avoid blocking)" (defroute index ("/" :decorators (@auth-optional)) () (let ((issues (model:list-issues :status :open))) - (format-case - (:html (render/index :issues issues)) - (:json (encode-json-to-string issues))))) + (render/index :issues issues))) (defroute settings ("/settings" :method :get :decorators (@auth)) () (render/settings)) @@ -551,9 +518,7 @@ given subject an body (in a thread, to avoid blocking)" (let* ((issue (model:get-issue id)) (*title* (format nil "~A | Panettone" (subject issue)))) - (format-case - (:html (render/issue issue)) - (:json (encode-json-to-string issue))))) + (render/issue issue))) (defroute edit-issue ("/issues/:id/edit" :decorators (@auth @handle-issue-not-found)) |