From b51a2c03985f09845e498ece625f5e8a309b6086 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 2 Nov 2016 19:17:04 -0400 Subject: better MIME type detection --- src/edit/util.go | 11 +++++++++++ src/edit/views.go | 4 +--- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/edit/util.go b/src/edit/util.go index 566796c..b6dfde1 100644 --- a/src/edit/util.go +++ b/src/edit/util.go @@ -1,7 +1,10 @@ package main import ( + "mime" + "net/http" "os/exec" + "path" ) type exitError exec.ExitError @@ -23,3 +26,11 @@ func errcheck(err error) { panic(err) } } + +func getctype(name string, content []byte) string { + ctype := mime.TypeByExtension(path.Ext(name)) + if ctype == "" { + ctype = http.DetectContentType(content) + } + return ctype +} diff --git a/src/edit/views.go b/src/edit/views.go index 81a6945..f9ff618 100644 --- a/src/edit/views.go +++ b/src/edit/views.go @@ -3,8 +3,6 @@ package main import ( "bytes" "io" - "mime" - "path" "strings" "util" ) @@ -62,7 +60,7 @@ func renderViewBlob(w io.Writer, upath string, file GitFile) error { var buf bytes.Buffer err = tmplViewBlob.Execute(&buf, map[string]string{ "path": upath, - "ctype": mime.TypeByExtension(path.Ext(upath)), + "ctype": getctype(upath, content), "content": string(content), }) if err != nil { -- cgit v1.2.3