Docker/Voltaserve/api/infra/file_identifier.go
2024-04-17 20:22:30 +02:00

124 lines
1.6 KiB
Go

package infra
import "strings"
type FileIdentifier struct {
}
func NewFileIdentifier() *FileIdentifier {
return &FileIdentifier{}
}
func (fi *FileIdentifier) IsPDF(extension string) bool {
return strings.ToLower(extension) == ".pdf"
}
func (fi *FileIdentifier) IsOffice(extension string) bool {
extensions := []string{
".xls",
".doc",
".ppt",
".xlsx",
".docx",
".pptx",
".odt",
".ott",
".ods",
".ots",
".odp",
".otp",
".odg",
".otg",
".odf",
".odc",
".rtf",
}
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}
func (fi *FileIdentifier) IsPlainText(extension string) bool {
extensions := []string{
".txt",
".html",
".js",
"jsx",
".ts",
".tsx",
".css",
".sass",
".scss",
".go",
".py",
".rb",
".java",
".c",
".h",
".cpp",
".hpp",
".json",
".yml",
".yaml",
".toml",
".md",
}
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}
func (fi *FileIdentifier) IsImage(extension string) bool {
extensions := []string{
".xpm",
".png",
".jpg",
".jpeg",
".jp2",
".gif",
".webp",
".tiff",
".bmp",
".ico",
".heif",
".xcf",
".svg",
}
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}
func (fi *FileIdentifier) IsVideo(extension string) bool {
extensions := []string{
".ogv",
".mpeg",
".mov",
".mqv",
".mp4",
".webm",
".3gp",
".3g2",
".avi",
".flv",
".mkv",
".asf",
".m4v",
}
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}