diff options
author | tjp <tjp@ctrl-c.club> | 2023-11-13 07:25:39 -0700 |
---|---|---|
committer | tjp <tjp@ctrl-c.club> | 2023-11-13 07:27:16 -0700 |
commit | 1e0f8e0aaeaf1bd2ee39c02e922238b641bcf88b (patch) | |
tree | 020e5de91f2343119fed10dede9d2c8262a3cd83 /contrib/fs/file.go | |
parent | a808b4692656c10bb43e2d54a2f5ef2746d231d5 (diff) |
refactor contribs to work with a Protocol interface
Diffstat (limited to 'contrib/fs/file.go')
-rw-r--r-- | contrib/fs/file.go | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/contrib/fs/file.go b/contrib/fs/file.go index 9f11f4f..4d79fea 100644 --- a/contrib/fs/file.go +++ b/contrib/fs/file.go @@ -1,36 +1,9 @@ package fs import ( - "mime" - "os" "strings" - "unicode/utf8" ) -func mediaType(filePath string) string { - if strings.HasSuffix(filePath, ".gmi") { - // This may not be present in the listings searched by mime.TypeByExtension, - // so provide a dedicated fast path for it here. - return "text/gemini" - } - - slashIdx := strings.LastIndex(filePath, "/") - dotIdx := strings.LastIndex(filePath[slashIdx+1:], ".") - if dotIdx == -1 { - return "application/octet-stream" - } - ext := filePath[slashIdx+1+dotIdx:] - - mtype := mime.TypeByExtension(ext) - if mtype == "" { - if contentsAreText(filePath) { - return "text/plain" - } - return "application/octet-stream" - } - return mtype -} - func isPrivate(fullpath string) bool { for _, segment := range strings.Split(fullpath, "/") { if len(segment) > 1 && segment[0] == '.' { @@ -39,28 +12,3 @@ func isPrivate(fullpath string) bool { } return false } - -func contentsAreText(filepath string) bool { - f, err := os.Open(filepath) - if err != nil { - return false - } - defer func() { _ = f.Close() }() - - var buf [1024]byte - n, err := f.Read(buf[:]) - if err != nil { - return false - } - - for i, c := range string(buf[:n]) { - if i+utf8.UTFMax > n { - // incomplete last char - break - } - if c == 0xFFFD || c < ' ' && c != '\n' && c != '\t' && c != '\f' { - return false - } - } - return true -} |