From d9d1d8368c787cff991be91432cc559042ea05e0 Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Wed, 24 Jun 2020 10:02:42 -0500 Subject: mimetype registry, serve-directory --- fs-serve.lisp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 fs-serve.lisp (limited to 'fs-serve.lisp') diff --git a/fs-serve.lisp b/fs-serve.lisp new file mode 100644 index 0000000..3519cb8 --- /dev/null +++ b/fs-serve.lisp @@ -0,0 +1,40 @@ +(in-package #:lazybones.fs-serve) + +(defun register-many (mime-prefix config &optional (reader 'read-file-into-string)) + (dolist (entry config) + (if (stringp entry) + (register-file-handler-config entry + (concatenate 'string mime-prefix entry) + reader) + (let ((mtype (concatenate 'string mime-prefix (car entry)))) + (dolist (ext (cdr entry)) + (register-file-handler-config ext mtype reader)))))) + +(defparameter +image-mimetypes+ + '("png" + "bmp" + ("jpeg" "jpeg" "jpg" "jfif" "pjpeg" "pjp") + "apng" + "gif" + ("x-icon" "ico" "cur") + ("svg+xml" "svg") + ("tiff" "tiff" "tif") + "webp" + ) + "Each entry in the list is either a string EXT that will be used to + insert image/EXT mimetype for file extension EXT, or, is a + list (IMGTYPE . EXTENSIONS) and will prodeuce a separate entry for + each of the list EXTENSIONS") + +(register-many "image/" +image-mimetypes+ 'read-file-into-byte-vector) + +(defparameter +text-mimetypes+ + '(("plain" "txt" "csv" "tsv" "org" "md") + "css" + ("html" "html" "htm") + ("javascript" "js"))) + +(register-many "text/" +text-mimetypes+) + + + -- cgit v1.2.3