all
This commit is contained in:
147
Downloads/Voltaserve/conversion/identifier/file_identifier.go
Normal file
147
Downloads/Voltaserve/conversion/identifier/file_identifier.go
Normal file
@ -0,0 +1,147 @@
|
||||
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
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package identifier
|
||||
|
||||
import (
|
||||
"voltaserve/core"
|
||||
)
|
||||
|
||||
type PipelineIdentifier struct {
|
||||
fileIdent *FileIdentifier
|
||||
}
|
||||
|
||||
func NewPipelineIdentifier() *PipelineIdentifier {
|
||||
return &PipelineIdentifier{
|
||||
fileIdent: NewFileIdentifier(),
|
||||
}
|
||||
}
|
||||
|
||||
func (pi *PipelineIdentifier) Identify(opts core.PipelineRunOptions) string {
|
||||
if pi.fileIdent.IsPDF(opts.Key) {
|
||||
return core.PipelinePDF
|
||||
} else if pi.fileIdent.IsOffice(opts.Key) || pi.fileIdent.IsPlainText(opts.Key) {
|
||||
return core.PipelineOffice
|
||||
} else if pi.fileIdent.IsImage(opts.Key) {
|
||||
return core.PipelineImage
|
||||
} else if pi.fileIdent.IsVideo(opts.Key) {
|
||||
return core.PipelineVideo
|
||||
}
|
||||
return ""
|
||||
}
|
Reference in New Issue
Block a user