Browse Source
* determine mime-type to use during ffprobe evaluation stage, don't bother rechecking by file extension * set mjpeg content-type * fix up tests expecting differing default valuespull/3512/head
16 changed files with 85 additions and 1378 deletions
@ -1,5 +0,0 @@
|
||||
# go-mimetypes |
||||
|
||||
A generated lookup map of file extensions to mimetypes, from data provided at: https://raw.githubusercontent.com/micnic/mime.json/master/index.json |
||||
|
||||
This allows determining mimetype without relying on OS mimetype lookups. |
||||
@ -1,42 +0,0 @@
|
||||
#!/bin/sh |
||||
|
||||
# Mime types JSON source |
||||
URL='https://raw.githubusercontent.com/micnic/mime.json/master/index.json' |
||||
|
||||
# Define intro to file |
||||
FILE=' |
||||
// This is an automatically generated file, do not edit |
||||
package mimetypes |
||||
|
||||
|
||||
// MimeTypes is a map of file extensions to mime types. |
||||
var MimeTypes = map[string]string{ |
||||
' |
||||
|
||||
# Set break on new-line |
||||
IFS=' |
||||
' |
||||
|
||||
for line in $(curl -fL "$URL" | grep -E '".+"\s*:\s*".+"'); do |
||||
# Trim final whitespace |
||||
line=$(echo "$line" | sed -e 's|\s*$||') |
||||
|
||||
# Ensure it ends in a comma |
||||
[ "${line%,}" = "$line" ] && line="${line}," |
||||
|
||||
# Add to file |
||||
FILE="${FILE}${line} |
||||
" |
||||
done |
||||
|
||||
# Add final statement to file |
||||
FILE="${FILE} |
||||
} |
||||
|
||||
" |
||||
|
||||
# Write to file |
||||
echo "$FILE" > 'mime.gen.go' |
||||
|
||||
# Check for valid go |
||||
gofumpt -w 'mime.gen.go' |
||||
File diff suppressed because it is too large
Load Diff
@ -1,47 +0,0 @@
|
||||
package mimetypes |
||||
|
||||
import "path" |
||||
|
||||
// PreferredExts defines preferred file
|
||||
// extensions for input mime types (as there
|
||||
// can be multiple extensions per mime type).
|
||||
var PreferredExts = map[string]string{ |
||||
MimeTypes["mp3"]: "mp3", // audio/mpeg
|
||||
MimeTypes["mpeg"]: "mpeg", // video/mpeg
|
||||
} |
||||
|
||||
// GetForFilename returns mimetype for given filename.
|
||||
func GetForFilename(filename string) (string, bool) { |
||||
ext := path.Ext(filename) |
||||
if len(ext) < 1 { |
||||
return "", false |
||||
} |
||||
mime, ok := MimeTypes[ext[1:]] |
||||
return mime, ok |
||||
} |
||||
|
||||
// GetFileExt returns the file extension to use for mimetype. Relying first upon
|
||||
// the 'PreferredExts' map. It simply returns the first match there may multiple.
|
||||
func GetFileExt(mimeType string) (string, bool) { |
||||
ext, ok := PreferredExts[mimeType] |
||||
if ok { |
||||
return ext, true |
||||
} |
||||
for ext, mime := range MimeTypes { |
||||
if mime == mimeType { |
||||
return ext, true |
||||
} |
||||
} |
||||
return "", false |
||||
} |
||||
|
||||
// GetFileExts returns known file extensions used for mimetype.
|
||||
func GetFileExts(mimeType string) []string { |
||||
var exts []string |
||||
for ext, mime := range MimeTypes { |
||||
if mime == mimeType { |
||||
exts = append(exts, ext) |
||||
} |
||||
} |
||||
return exts |
||||
} |
||||
Loading…
Reference in new issue