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

148 lines
2.1 KiB
Go

package identifier
import (
"path/filepath"
"strings"
)
type FileIdentifier struct {
}
func NewFileIdentifier() *FileIdentifier {
return &FileIdentifier{}
}
func (fi *FileIdentifier) IsPDF(path string) bool {
return strings.ToLower(filepath.Ext(path)) == ".pdf"
}
func (fi *FileIdentifier) IsOffice(path string) bool {
extensions := []string{
".xls",
".doc",
".ppt",
".xlsx",
".docx",
".pptx",
".odt",
".ott",
".ods",
".ots",
".odp",
".otp",
".odg",
".otg",
".odf",
".odc",
".rtf",
}
extension := filepath.Ext(path)
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}
func (fi *FileIdentifier) IsPlainText(path 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",
}
extension := filepath.Ext(path)
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}
func (fi *FileIdentifier) IsImage(path string) bool {
extensions := []string{
".xpm",
".png",
".jpg",
".jpeg",
".jp2",
".gif",
".webp",
".tiff",
".bmp",
".ico",
".heif",
".xcf",
".svg",
}
extension := filepath.Ext(path)
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}
func (fi *FileIdentifier) IsNonAlphaChannelImage(path string) bool {
extensions := []string{
".jpg",
".jpeg",
".gif",
".tiff",
".bmp",
}
extension := filepath.Ext(path)
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}
func (fi *FileIdentifier) IsVideo(path string) bool {
extensions := []string{
".ogv",
".mpeg",
".mov",
".mqv",
".mp4",
".webm",
".3gp",
".3g2",
".avi",
".flv",
".mkv",
".asf",
".m4v",
}
extension := filepath.Ext(path)
for _, v := range extensions {
if strings.ToLower(extension) == v {
return true
}
}
return false
}