aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Okay <colin@cicadas.surf>2022-10-14 16:40:18 -0500
committerColin Okay <colin@cicadas.surf>2022-10-14 16:40:18 -0500
commitcea91a9edac5fcda2d888521d102efc3695a1cf8 (patch)
tree4891e9eeb03e0232994340be79bf8d6874eae76a
parent715496812a926b23748331f6955196e022a7a221 (diff)
Add: ext->mimetype utility
-rw-r--r--lazybones.lisp78
-rw-r--r--package.lisp3
2 files changed, 80 insertions, 1 deletions
diff --git a/lazybones.lisp b/lazybones.lisp
index 1b26a89..234340e 100644
--- a/lazybones.lisp
+++ b/lazybones.lisp
@@ -466,3 +466,81 @@ CLASS-NAME should be a symbol, and SLOT-NAMES symbols."
(princ #\newline)))
(princ #\newline))
app)))
+
+(defparameter +extension->mimetype+
+ '(("aac" "audio/aac")
+ ("abw" "application/x-abiword")
+ ("arc" "application/x-freearc")
+ ("avif" "image/avif")
+ ("avi" "video/x-msvideo")
+ ("azw" "application/vnd.amazon.ebook")
+ ("bin" "application/octet-stream")
+ ("bmp" "image/bmp")
+ ("bz" "application/x-bzip")
+ ("bz2" "application/x-bzip2")
+ ("cda" "application/x-cdf")
+ ("csh" "application/x-csh")
+ ("css" "text/css")
+ ("csv" "text/csv")
+ ("doc" "application/msword")
+ ("docx" "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
+ ("eot" "application/vnd.ms-fontobject")
+ ("epub" "application/epub+zip")
+ ("gz" "application/gzip")
+ ("gif" "image/gif")
+ ("htm" "text/html")
+ ("ico" "image/vnd.microsoft.icon")
+ ("ics" "text/calendar")
+ ("jar" "application/java-archive")
+ ("jpeg" "image/jpeg")
+ ("js" "text/javascript")
+ ("json" "application/json")
+ ("jsonld" "application/ld+json")
+ ("mid" "audio/x-midi")
+ ("mjs" "text/javascript")
+ ("mp3" "audio/mpeg")
+ ("mp4" "video/mp4")
+ ("mpeg" "video/mpeg")
+ ("mpkg" "application/vnd.apple.installer+xml")
+ ("odp" "application/vnd.oasis.opendocument.presentation")
+ ("ods" "application/vnd.oasis.opendocument.spreadsheet")
+ ("odt" "application/vnd.oasis.opendocument.text")
+ ("oga" "audio/ogg")
+ ("ogv" "video/ogg")
+ ("ogx" "application/ogg")
+ ("opus" "audio/opus")
+ ("otf" "font/otf")
+ ("png" "image/png")
+ ("pdf" "application/pdf")
+ ("php" "application/x-httpd-php")
+ ("ppt" "application/vnd.ms-powerpoint")
+ ("pptx" "application/vnd.openxmlformats-officedocument.presentationml.presentation")
+ ("rar" "application/vnd.rar")
+ ("rtf" "application/rtf")
+ ("sh" "application/x-sh")
+ ("svg" "image/svg+xml")
+ ("tar" "application/x-tar")
+ ("tif" "image/tiff")
+ ("ts" "video/mp2t")
+ ("ttf" "font/ttf")
+ ("txt" "text/plain")
+ ("vsd" "application/vnd.visio")
+ ("wav" "audio/wav")
+ ("weba" "audio/webm")
+ ("webm" "video/webm")
+ ("webp" "image/webp")
+ ("woff" "font/woff")
+ ("woff2" "font/woff2")
+ ("xhtml" "application/xhtml+xml")
+ ("xls" "application/vnd.ms-excel")
+ ("xlsx" "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+ ("xml" "application/xml")
+ ("xul" "application/vnd.mozilla.xul+xml")
+ ("zip" "application/zip")
+ ("3gp" "audio/3gpp")
+ ("3g2" "audio/3gpp2")
+ ("7z" "application/x-7z-compressed")))
+
+
+(defun ext->mimetype (ext)
+ (second (assoc ext +extension->mimetype+ :test #'string-equal)))
diff --git a/package.lisp b/package.lisp
index b11af58..6e57492 100644
--- a/package.lisp
+++ b/package.lisp
@@ -80,5 +80,6 @@
#:uninstall-app
#:set-definition
#:drop-definition
- #:add-class-to-definitions))
+ #:add-class-to-definitions
+ #:ext->mimetype))