init
This commit is contained in:
93
internal/models/models.go
Normal file
93
internal/models/models.go
Normal file
@@ -0,0 +1,93 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type FileType string
|
||||
|
||||
const (
|
||||
FileTypeMarkdown FileType = "md"
|
||||
FileTypeDirectory FileType = "dir"
|
||||
FileTypeImage FileType = "image"
|
||||
FileTypeText FileType = "text"
|
||||
FileTypeOther FileType = "other"
|
||||
)
|
||||
|
||||
type FileInfo struct {
|
||||
Name string `json:"name"`
|
||||
Path string `json:"path"`
|
||||
Type FileType `json:"type"`
|
||||
Size int64 `json:"size"`
|
||||
ModTime time.Time `json:"mod_time"`
|
||||
DisplayName string `json:"display_name"`
|
||||
}
|
||||
|
||||
type TreeNode struct {
|
||||
Name string `json:"name"`
|
||||
Path string `json:"path"`
|
||||
Type FileType `json:"type"`
|
||||
Children []*TreeNode `json:"children,omitempty"`
|
||||
}
|
||||
|
||||
type Breadcrumb struct {
|
||||
Name string `json:"name"`
|
||||
URL string `json:"url"`
|
||||
}
|
||||
|
||||
type ImageStorageInfo struct {
|
||||
StorageDir string
|
||||
MarkdownPath string
|
||||
}
|
||||
|
||||
func GetFileType(extension string, allowedImageExts, allowedFileExts []string) FileType {
|
||||
ext := strings.ToLower(strings.TrimPrefix(extension, "."))
|
||||
|
||||
if ext == "md" {
|
||||
return FileTypeMarkdown
|
||||
}
|
||||
|
||||
// Check if it's an allowed image extension
|
||||
for _, allowedExt := range allowedImageExts {
|
||||
if strings.ToLower(strings.TrimPrefix(allowedExt, ".")) == ext {
|
||||
return FileTypeImage
|
||||
}
|
||||
}
|
||||
|
||||
// Check if it's an allowed file extension
|
||||
for _, allowedExt := range allowedFileExts {
|
||||
if strings.ToLower(strings.TrimPrefix(allowedExt, ".")) == ext {
|
||||
return FileTypeText
|
||||
}
|
||||
}
|
||||
|
||||
return FileTypeOther
|
||||
}
|
||||
|
||||
func IsImageFile(filename string, allowedImageExts []string) bool {
|
||||
ext := strings.ToLower(filepath.Ext(filename))
|
||||
ext = strings.TrimPrefix(ext, ".")
|
||||
|
||||
for _, allowedExt := range allowedImageExts {
|
||||
if strings.ToLower(strings.TrimPrefix(allowedExt, ".")) == ext {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func IsAllowedFile(filename string, allowedExts []string) bool {
|
||||
ext := strings.ToLower(filepath.Ext(filename))
|
||||
ext = strings.TrimPrefix(ext, ".")
|
||||
|
||||
for _, allowedExt := range allowedExts {
|
||||
if strings.ToLower(strings.TrimPrefix(allowedExt, ".")) == ext {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user