lqml/examples/meshtastic/lisp/tile-provider.lisp

33 lines
1,023 B
Common Lisp

(in-package :loc)
(defvar *tile-provider-json*
"{
\"UrlTemplate\": \"https://tile.openstreetmap.org/%z/%x/%y.png\",
\"ImageFormat\": \"png\",
\"QImageFormat\": \"Indexed8\",
\"ID\": \"wmf-intl-1x\",
\"MaximumZoomLevel\": 19,
\"MapCopyRight\": \"<a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a>\",
\"DataCopyRight\": \"\"
}")
(defvar *newline* #.(format nil "~C~C" #\Return #\Newline))
(defun tile-provider-handler (stream)
(when (x:starts-with "GET" (read-line stream))
(princ (format nil "HTTP/1.0 200 Ok~AContent-Type: application/json; charset=\"utf-8\"~A~A"
*newline* *newline* *newline*)
stream)
(princ *tile-provider-json* stream)
(princ *newline* stream)
(finish-output)))
(defvar *tile-provider* nil)
(defun start-tile-provider ()
(unless *tile-provider*
(setf *tile-provider*
(mp:process-run-function
:tile-provider
(lambda () (usocket:socket-server (app:my-ip) 1702 'tile-provider-handler))))))