31 lines
834 B
Common Lisp
31 lines
834 B
Common Lisp
;;;; cl-scopes/web/server - web server functionality
|
|
|
|
(defpackage :scopes/web/server
|
|
(:use :common-lisp)
|
|
(:local-nicknames (:config :scopes/config))
|
|
(:export #:config #:address #:port
|
|
#:*listener* #:start #:stop))
|
|
|
|
(in-package :scopes/web/server)
|
|
|
|
(defclass config (config:base)
|
|
((config:env-slots :initform '(address port))
|
|
(address :reader address :initarg :address :initform "localhost")
|
|
(port :reader port :initarg :port :initform "8888")))
|
|
|
|
;;;; listener = server process
|
|
|
|
(defvar *listener* nil)
|
|
|
|
(defun app (env)
|
|
'(200 (:content-type "text/plain") ("Hello World!")))
|
|
|
|
(defun start (cfg)
|
|
(setf *listener*
|
|
(clack:clackup #'app
|
|
:port (parse-integer (port cfg))
|
|
:address (address cfg)
|
|
:silent t)))
|
|
|
|
(defun stop ()
|
|
(clack:stop *listener*))
|