| @@ -1,7 +1,10 @@ | |||
| package main | |||
| import ( | |||
| "log" | |||
| "os" | |||
| "github.com/rakyll/magicmime" | |||
| ) | |||
| func getFileSize(s string) (size int64, err error) { | |||
| @@ -19,6 +22,17 @@ func getFileSize(s string) (size int64, err error) { | |||
| return | |||
| } | |||
| func getFileMime(s string) (mime string) { | |||
| return "" | |||
| func getFileMime(s string) (mimetype string, err error) { | |||
| if err := magicmime.Open(magicmime.MAGIC_MIME_TYPE | magicmime.MAGIC_SYMLINK | magicmime.MAGIC_ERROR); err != nil { | |||
| log.Fatal(err) | |||
| return "", err | |||
| } | |||
| defer magicmime.Close() | |||
| mimetype, err = magicmime.TypeByFile(s) | |||
| if err != nil { | |||
| log.Fatalf("error occured during type lookup: %v", err) | |||
| } | |||
| //log.Printf("mime-type: %v", mimetype) | |||
| return | |||
| } | |||
| @@ -18,3 +18,16 @@ func TestGetFileSize(t *testing.T) { | |||
| AssertEqual(t, size, int64(v), msg) | |||
| } | |||
| } | |||
| func TestGetMimeType(t *testing.T) { | |||
| var fileMime = map[string]string{ | |||
| "media_for_test/640x480.jpg": "image/jpeg", | |||
| "media_for_test/3640x3480.jpg": "image/jpeg", | |||
| "media_for_test/video.mp4": "video/mp4", | |||
| } | |||
| for k, v := range fileMime { | |||
| mime, _ := getFileMime(k) | |||
| msg := fmt.Sprintf("%s should be %s, not %s", k, v, mime) | |||
| AssertEqual(t, mime, v, msg) | |||
| } | |||
| } | |||