aboutsummaryrefslogtreecommitdiff
path: root/fs-serve.lisp
blob: 169778d92a2330ea33682ca1fa16f711e60ccfef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(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"
     "lisp" "py" "el" "c" "java" "scm" "rb" "rs" "cpp"
     "hx")
    "css"
    ("html" "html" "htm")
    ("javascript" "js")))

(register-many "text/" +text-mimetypes+)