home/internal/domain/file.go
2023-11-09 06:44:05 +06:00

45 lines
785 B
Go

package domain
import (
"mime"
"path/filepath"
"strings"
"time"
)
type File struct {
Path string
Updated time.Time
Content []byte
}
// LogicalName returns full file name without directory path.
func (f File) LogicalName() string {
return filepath.Base(f.Path)
}
// BaseFileName returns file name without extention and directory path.
func (f File) BaseFileName() string {
base := filepath.Base(f.Path)
return strings.TrimSuffix(base, filepath.Ext(base))
}
// Ext returns file extention.
func (f File) Ext() string {
if ext := filepath.Ext(f.Path); len(ext) > 1 {
return ext[1:]
}
return ""
}
// Dir returns file directory.
func (f File) Dir() string {
return filepath.Dir(f.Path)
}
func (f File) MediaType() string {
return mime.TypeByExtension(f.Ext())
}