diff --git a/fs.go b/fs.go index 01e2618..f899782 100644 --- a/fs.go +++ b/fs.go @@ -3,10 +3,18 @@ package gmi import ( "errors" "io" + "mime" "os" "path" + "path/filepath" ) +func init() { + // Add Gemini mime types + mime.AddExtensionType(".gmi", "text/gemini") + mime.AddExtensionType(".gemini", "text/gemini") +} + // FileServer errors. var ( ErrNotAFile = errors.New("gemini: not a file") @@ -29,8 +37,10 @@ func (fsh fsHandler) Serve(rw *ResponseWriter, req *Request) { NotFound(rw, req) return } - // TODO: detect mimetype - rw.SetMimetype("text/gemini") + // Detect mimetype + ext := filepath.Ext(path) + mimetype := mime.TypeByExtension(ext) + rw.SetMimetype(mimetype) // Copy file to response writer io.Copy(rw, f) }