This commit is contained in:
Akira Tempaku 2025-03-29 14:48:36 +09:00
parent b6b84cb09d
commit 01e3911757
Signed by: paku
GPG key ID: 5B4E8402BCC50607
2 changed files with 15 additions and 15 deletions

View file

@ -2,7 +2,8 @@
(:use #:cl (:use #:cl
#:hsx #:hsx
#:trivia) #:trivia)
(:import-from :jingle) (:import-from #:jingle
#:set-response-header)
(:import-from #:hsx/element (:import-from #:hsx/element
#:element) #:element)
(:import-from #:hp/env (:import-from #:hp/env
@ -10,9 +11,7 @@
(in-package #:hp/renderer) (in-package #:hp/renderer)
(defun bust-cache (url) (defun bust-cache (url)
(format nil "~a?v=~a" url (if (string= (hp-env) "dev") (format nil "~a?v=~a" url #.(get-universal-time)))
(get-universal-time)
#.(get-universal-time))))
(defparameter *metadata-template* (defparameter *metadata-template*
(list :title (lambda (title) (list :title (lambda (title)
@ -26,7 +25,7 @@
(defun complete-metadata (metadata) (defun complete-metadata (metadata)
(loop (loop
:for (key template) :on *metadata-template* by #'cddr :for (key template) :on *metadata-template* :by #'cddr
:for value := (getf metadata key) :for value := (getf metadata key)
:append (list key (if (functionp template) :append (list key (if (functionp template)
(funcall template value) (funcall template value)
@ -72,17 +71,17 @@
children))))) children)))))
(defmethod jingle:process-response ((app jingle:app) result) (defmethod jingle:process-response ((app jingle:app) result)
(jingle:set-response-header :content-type "text/html; charset=utf-8") (set-response-header :content-type "text/html; charset=utf-8")
(when (string= (hp-env) "dev") (when (string= (hp-env) "dev")
(jingle:set-response-header :cache-control "no-store, no-cache, must-revalidate") (set-response-header :cache-control "no-store, no-cache, must-revalidate")
(jingle:set-response-header :pragma "no-cache") (set-response-header :pragma "no-cache")
(jingle:set-response-header :expires "0")) (set-response-header :expires "0"))
(call-next-method app (call-next-method app
(hsx:render-to-string (hsx:render-to-string
(match result (match result
((guard (or (list element metadata) ((guard (or (list page metadata)
element) page)
(typep element 'element)) (typep page 'element))
(~document (complete-metadata metadata) (~document (complete-metadata metadata)
element)) page))
(_ (error "Invalid response form")))))) (_ (error "Invalid response form"))))))

View file

@ -1,7 +1,8 @@
(defpackage #:hp/routes/not-found (defpackage #:hp/routes/not-found
(:use #:cl (:use #:cl
#:hsx) #:hsx)
(:import-from :jingle) (:import-from #:jingle
#:set-response-status)
(:export #:handle-not-found)) (:export #:handle-not-found))
(in-package #:hp/routes/not-found) (in-package #:hp/routes/not-found)
@ -18,5 +19,5 @@
"Back to TOP")))) "Back to TOP"))))
(defun handle-not-found () (defun handle-not-found ()
(jingle:set-response-status :not-found) (set-response-status :not-found)
(list (~page) *metadata*)) (list (~page) *metadata*))