work in progress: server - basic config, start with dummy app
This commit is contained in:
parent
ad7c4fa901
commit
1d08d653e9
5 changed files with 35 additions and 7 deletions
|
@ -25,8 +25,8 @@
|
|||
|
||||
(defclass root (common)
|
||||
((env-keys :reader env-keys
|
||||
:initform nil
|
||||
:allocation :class)
|
||||
:initarg :env-keys
|
||||
:initform nil)
|
||||
(env-prefix :reader env-prefix
|
||||
:initarg :env-prefix
|
||||
:initform "SCOPES_")
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
:version "0.0.1"
|
||||
:homepage "https://www.cyberconcepts.org"
|
||||
:description "Web client and server functionality."
|
||||
:depends-on (:alexandria :com.inuoe.jzon :lack :log4cl :str
|
||||
:depends-on (:alexandria :clack :com.inuoe.jzon :lack :log4cl :str
|
||||
:scopes-core)
|
||||
:components ((:file "web/server")
|
||||
(:file "util")
|
||||
|
|
8
test/etc/config-web.lisp
Normal file
8
test/etc/config-web.lisp
Normal file
|
@ -0,0 +1,8 @@
|
|||
;;;; cl-scopes/test/etc/config-web
|
||||
|
||||
(in-package :scopes/test-web)
|
||||
|
||||
(setf *config*
|
||||
(make-instance 'config:root :env-keys '(:address :port)))
|
||||
|
||||
(make-instance 'server:config :parent *config*)
|
|
@ -13,6 +13,18 @@
|
|||
(defvar *config* nil)
|
||||
|
||||
(defun run ()
|
||||
(let ((*config* nil)
|
||||
(t:*test-suite* (t:test-suite "config")))))
|
||||
|
||||
(let ((t:*test-suite* (t:test-suite "web")))
|
||||
(load (t:test-path "config-web" "etc"))
|
||||
(test-server)
|
||||
(t:show-result)))
|
||||
|
||||
(defun app (env)
|
||||
'(200 (:content-type "text/plain") ("Hello World!")))
|
||||
|
||||
(t:deftest test-server ()
|
||||
(let ((cfg (car (config:children *config*))))
|
||||
(== (parse-integer (server:port cfg)) 8888)
|
||||
(setf server:*server*
|
||||
(clack:clackup #'app
|
||||
:port (parse-integer (server:port cfg))
|
||||
:address (server:address cfg)))))
|
||||
|
|
|
@ -3,8 +3,16 @@
|
|||
(defpackage :scopes/web/server
|
||||
(:use :common-lisp)
|
||||
(:local-nicknames (:config :scopes/config))
|
||||
(:export #:*server*))
|
||||
(:export #:config #:address #:port
|
||||
#:*server*))
|
||||
|
||||
(in-package :scopes/web/server)
|
||||
|
||||
(defclass config (config:base)
|
||||
((address :reader address :initarg :address :initform "localhost")
|
||||
(port :reader port :initarg :port :initform "8888")))
|
||||
|
||||
(defmethod initialize-instance :after ((cfg config) &key &allow-other-keys)
|
||||
(config:hash-to-slots (config:env-data cfg) cfg '(address port)))
|
||||
|
||||
(defvar *server* nil)
|
||||
|
|
Loading…
Add table
Reference in a new issue