about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgrfn <grfn@gws.fyi>2021-04-30T11·51+0000
committergrfn <grfn@gws.fyi>2021-04-30T11·54+0000
commit17239c597df554b9fe182e6a5a5b0d160217511e (patch)
treeb5bddd753860b40f9bc9311fcdf08b57c2cec67f
parent216c3f73b97d8ff9db7932bb16226315edfac4fc (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
-rw-r--r--web/panettone/src/packages.lisp4
-rw-r--r--web/panettone/src/panettone.lisp41
2 files changed, 4 insertions, 41 deletions
diff --git a/web/panettone/src/packages.lisp b/web/panettone/src/packages.lisp
index a428c188c0..3e6aa4a05f 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 d6713407a5..3d803e1fb6 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))