diff --git a/scopes-web.asd b/scopes-web.asd index b96e98b..7164826 100644 --- a/scopes-web.asd +++ b/scopes-web.asd @@ -11,10 +11,12 @@ :scopes-core) :components ((:file "frontend/cs-hx" :depends-on ("web/dom" "web/response")) (:file "web/client") + (:file "web/cookie") (:file "web/dom") (:file "web/jwt") - (:file "web/response" :depends-on ("web/dom")) - (:file "web/server" :depends-on ("web/jwt" "web/response"))) + (:file "web/response" :depends-on ("web/cookie" "web/dom")) + (:file "web/server" + :depends-on ("web/cookie" "web/jwt" "web/response"))) :long-description "scopes/web: Web server and web/API/REST client." :in-order-to ((test-op (test-op "scopes-web/test")))) diff --git a/test/test-web.lisp b/test/test-web.lisp index 2640d8c..17f8c3d 100644 --- a/test/test-web.lisp +++ b/test/test-web.lisp @@ -69,8 +69,10 @@ (deftest test-message (client) (let ((msg (message:create '(:test :data :field :info) :data '(:info "test data")))) (== (client:send-message client msg) - "
: test data
")) - ;"
info
test data
"))) - (let ((msg (message:create '(:test :cookie) :data '(:name "mycookie")))) - (client:send-message client msg)) + "
: test data
")) ; cs-hx:response + ;"
info
test data
"))) ; default response + (let ((msg (message:create '(:test :cookie) + :data '(:name "mycookie" :value "my_value")))) + (client:send-message client msg) + (util:lgi client::*cookie-jar*)) ) diff --git a/web/cookie.lisp b/web/cookie.lisp new file mode 100644 index 0000000..042981e --- /dev/null +++ b/web/cookie.lisp @@ -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)) diff --git a/web/response.lisp b/web/response.lisp index 9b8c23c..203d478 100644 --- a/web/response.lisp +++ b/web/response.lisp @@ -2,7 +2,8 @@ (defpackage :scopes/web/response (:use :common-lisp) - (:local-nicknames (:core :scopes/core) + (:local-nicknames (:cookie :scopes/web/cookie) + (:core :scopes/core) (:dom :scopes/web/dom) (:message :scopes/core/message) (:shape :scopes/shape) @@ -37,7 +38,9 @@ (shape:print-fields ia s 'messages)) (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