diff options
Diffstat (limited to 'fs.go')
| -rw-r--r-- | fs.go | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -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) } |