aboutsummaryrefslogtreecommitdiff
path: root/fs-serve.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'fs-serve.lisp')
-rw-r--r--fs-serve.lisp40
1 files changed, 40 insertions, 0 deletions
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+)
+
+
+