ywatds/dataserver.lisp

31 lines
1.0 KiB
Common Lisp
Raw Normal View History

2021-08-12 13:37:49 -07:00
(defpackage :ywatds
(:use :cl)
(:export :program-entry))
(in-package :ywatds)
(defun program-entry ()
(let* ((argv (uiop:command-line-arguments))
(worldpath (uiop:ensure-pathname (car argv)
:defaults (uiop:getcwd)
:ensure-directory t
:want-existing t
:ensure-absolute t))
(serverport (parse-integer (cadr argv)))
2021-08-12 14:38:14 -07:00
(server (make-instance 'easy-routes:routes-acceptor
2021-08-12 13:37:49 -07:00
:port serverport)))
(macrolet ((savefilepath (n)
`(uiop:subpathname worldpath (format nil "advtrains_~a" ,n))))
(ywsw:safe-text-route
("/dumpser/:p" :method :get) (&path (p 'string))
(format nil "~s" (atsl:from-file (savefilepath p) :alist)))
(ywsw:safe-text-route
("/pretty_dump/interlocking" :method :get) ()
(format nil "~s" (atil:import-data (savefilepath "interlocking.ls"))))
(hunchentoot:start server)
;; loop until an error occurs
(handler-case (loop (sleep most-positive-fixnum))
(t (c) (format t "~&~a~%" c)))
(ignore-errors
(hunchentoot:stop server)
(uiop:quit)))))