diff --git a/scopes-web.asd b/scopes-web.asd index 7a9aa7e..5dd837b 100644 --- a/scopes-web.asd +++ b/scopes-web.asd @@ -6,12 +6,14 @@ :version "0.0.1" :homepage "https://www.cyberconcepts.org" :description "Web client and server functionality." - :depends-on (:alexandria :clack :com.inuoe.jzon :lack :log4cl :str + :depends-on (:alexandria :clack :com.inuoe.jzon :dexador :lack :log4cl :str :scopes-core) - :components ((:file "web/server") + :components ((:file "web/client") + (:file "web/server") (:file "util") (:file "testing" :depends-on ("util")) - (:file "test/test-web" :depends-on ("testing" "web/server"))) + (:file "test/test-web" + :depends-on ("testing" "web/client" "web/server"))) :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/etc/config-web.lisp b/test/etc/config-web.lisp index 6cc1c10..1cd8d4b 100644 --- a/test/etc/config-web.lisp +++ b/test/etc/config-web.lisp @@ -7,3 +7,5 @@ (make-instance 'server:config :parent *config* :port "8899") + +(make-instance 'client:config :parent *config*) diff --git a/test/test-web.lisp b/test/test-web.lisp index 412aa5d..c69428e 100644 --- a/test/test-web.lisp +++ b/test/test-web.lisp @@ -3,6 +3,7 @@ (defpackage :scopes/test-web (:use :common-lisp) (:local-nicknames (:config :scopes/config) + (:client :scopes/web/client) (:server :scopes/web/server) (:t :scopes/testing)) (:export #:run) @@ -17,12 +18,22 @@ (*config* nil) (server:*listener* nil)) (load (t:test-path "config-web" "etc")) - (let ((cfg (car (config:children *config*)))) + (let ((cfg (cadr (config:children *config*)))) (test-server-config cfg) (server:start cfg)) - (sleep 1) + (sleep 0.1) + (let ((cfg (car (config:children *config*)))) + (test-client cfg)) + (sleep 0.1) (server:stop) (t:show-result))) (t:deftest test-server-config (cfg) - (== (parse-integer (server:port cfg)) 8899)) + (== (parse-integer (server:port cfg)) 8899)) + +(t:deftest test-client (cfg) + (== (client:url cfg) "http://localhost:8899") + ;(print (dexador:get "https://github.com"))) + ;(print (dexador:get "http://127.0.0.1:8899"))) + (print (client:url cfg)) + (print (dexador:get (client:url cfg)))) diff --git a/web/client.lisp b/web/client.lisp new file mode 100644 index 0000000..d7c29ba --- /dev/null +++ b/web/client.lisp @@ -0,0 +1,12 @@ +;;;; cl-scopes/web/client - web client functionality + +(defpackage :scopes/web/client + (:use :common-lisp) + (:local-nicknames (:config :scopes/config)) + (:export #:config #:url)) + +(in-package :scopes/web/client) + +(defclass config (config:base) + ((url :reader url :initarg :url :initform "http://localhost:8899"))) + diff --git a/web/server.lisp b/web/server.lisp index 3962ecf..4651415 100644 --- a/web/server.lisp +++ b/web/server.lisp @@ -24,7 +24,7 @@ (defun start (cfg) (setf *listener* - (clack:clackup #'app + (clack:clackup #'(lambda (env) (app env)) :port (parse-integer (port cfg)) :address (address cfg))))