web/response: create and set cookie, using web/cookie package based on cl-cookie

This commit is contained in:
Helmut Merz 2024-09-01 10:33:37 +02:00
parent 4d9328104f
commit f6a361f4b8
4 changed files with 31 additions and 8 deletions

View file

@ -11,10 +11,12 @@
:scopes-core) :scopes-core)
:components ((:file "frontend/cs-hx" :depends-on ("web/dom" "web/response")) :components ((:file "frontend/cs-hx" :depends-on ("web/dom" "web/response"))
(:file "web/client") (:file "web/client")
(:file "web/cookie")
(:file "web/dom") (:file "web/dom")
(:file "web/jwt") (:file "web/jwt")
(:file "web/response" :depends-on ("web/dom")) (:file "web/response" :depends-on ("web/cookie" "web/dom"))
(:file "web/server" :depends-on ("web/jwt" "web/response"))) (:file "web/server"
:depends-on ("web/cookie" "web/jwt" "web/response")))
:long-description "scopes/web: Web server and web/API/REST client." :long-description "scopes/web: Web server and web/API/REST client."
:in-order-to ((test-op (test-op "scopes-web/test")))) :in-order-to ((test-op (test-op "scopes-web/test"))))

View file

@ -69,8 +69,10 @@
(deftest test-message (client) (deftest test-message (client)
(let ((msg (message:create '(:test :data :field :info) :data '(:info "test data")))) (let ((msg (message:create '(:test :data :field :info) :data '(:info "test data"))))
(== (client:send-message client msg) (== (client:send-message client msg)
"<div><div><label>info</label>: test data</div></div>")) "<div><div><label>info</label>: test data</div></div>")) ; cs-hx:response
;"<dl><dt>info</dt><dd>test data</dd></dl>"))) ;"<dl><dt>info</dt><dd>test data</dd></dl>"))) ; default response
(let ((msg (message:create '(:test :cookie) :data '(:name "mycookie")))) (let ((msg (message:create '(:test :cookie)
(client:send-message client msg)) :data '(:name "mycookie" :value "my_value"))))
(client:send-message client msg)
(util:lgi client::*cookie-jar*))
) )

16
web/cookie.lisp Normal file
View file

@ -0,0 +1,16 @@
;;;; cl-scopes/web/cookie - interface to cl-cookie for simplified access
(defpackage :scopes/web/cookie
(:use :common-lisp)
(:local-nicknames (:c cl-cookie))
(:export #:create #:make-header))
(in-package :scopes/web/cookie)
(defun create (name value &key max-age (path "/") (httponly-p t))
(c:make-cookie :name name :value value
:path path :httponly-p httponly-p
:max-age max-age))
(defun make-header (cookie)
(c:write-set-cookie-header cookie))

View file

@ -2,7 +2,8 @@
(defpackage :scopes/web/response (defpackage :scopes/web/response
(:use :common-lisp) (:use :common-lisp)
(:local-nicknames (:core :scopes/core) (:local-nicknames (:cookie :scopes/web/cookie)
(:core :scopes/core)
(:dom :scopes/web/dom) (:dom :scopes/web/dom)
(:message :scopes/core/message) (:message :scopes/core/message)
(:shape :scopes/shape) (:shape :scopes/shape)
@ -37,7 +38,9 @@
(shape:print-fields ia s 'messages)) (shape:print-fields ia s 'messages))
(defun render-cookie (cdata) (defun render-cookie (cdata)
"DEMO=1234567_value; Path=/") ;"; Domain=testing.cyberscopes.org") (let ((cookie (cookie:create (getf cdata :name) (getf cdata :value))))
(cookie:make-header cookie)))
;"DEMO=1234567_value; Path=/") ;"; Domain=testing.cyberscopes.org")
;;;; response definitions ;;;; response definitions