forked from h2non/filetype
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfiletype.go
More file actions
65 lines (56 loc) · 1.38 KB
/
filetype.go
File metadata and controls
65 lines (56 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package filetype
import (
"errors"
)
// ErrEmptyBuffer represents an empty buffer error
var ErrEmptyBuffer = errors.New("Empty buffer")
// ErrUnknownBuffer represents a unknown buffer error
var ErrUnknownBuffer = errors.New("Unknown buffer type")
// Is checks if a given buffer matches with the given file type extension
func Is(buf []byte, ext string) bool {
kind, ok := TypedMap[ext]
if ok {
return IsType(buf, kind)
}
return false
}
// IsExtension semantic alias to Is()
func IsExtension(buf []byte, ext string) bool {
return Is(buf, ext)
}
// IsType checks if a given buffer matches with the given file type
func IsType(buf []byte, kind Typed) bool {
matcher := Matchers[kind]
if matcher == nil {
return false
}
return matcher(buf) != Unknown
}
// IsMIME checks if a given buffer matches with the given MIME type
func IsMIME(buf []byte, mime string) bool {
for _, kind := range TypedMap {
if kind.MIME.Value == mime {
matcher := Matchers[kind]
return matcher(buf) != Unknown
}
}
return false
}
// IsSupported checks if a given file extension is supported
func IsSupported(ext string) bool {
for name := range TypedMap {
if name == ext {
return true
}
}
return false
}
// IsMIMESupported checks if a given MIME type is supported
func IsMIMESupported(mime string) bool {
for _, m := range TypedMap {
if m.MIME.Value == mime {
return true
}
}
return false
}