1
0
Fork 0
mirror of https://github.com/Luzifer/share.git synced 2024-12-20 18:41:17 +00:00
share/mime.go

37 lines
724 B
Go
Raw Permalink Normal View History

package main
import (
"fmt"
"mime"
"strings"
)
type mimeDB map[string]string
// mimeResolver contains some well-known mime-types and falls back
// to mime package to resolve the extension if no internal override
// is known for the given mime-type
var mimeResolver = mimeDB{
"text/plain": ".txt", // Detected as .asc when using mime package
}
func (m mimeDB) ExtensionsByType(t string) (string, error) {
if v, ok := m[t]; ok {
return v, nil
}
exts, err := mime.ExtensionsByType(t)
if err != nil {
return "", fmt.Errorf("getting mime extension: %w", err)
}
for _, ext := range exts {
if !strings.HasPrefix(ext, ".") {
continue
}
return ext, nil
}
return "", fmt.Errorf("no extension found")
}