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)
- "
"))
- ;"- info
- test data
")))
- (let ((msg (message:create '(:test :cookie) :data '(:name "mycookie"))))
- (client:send-message client msg))
+ "")) ; 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