refactor: Extract "image" as FileType enum
- Extracted "image" string occurrences into a FileType enum to resolve goconst warnings
This commit is contained in:
parent
3de1c4f0ca
commit
bb8c4b7884
@ -27,14 +27,29 @@ import (
|
|||||||
"github.com/filebrowser/filebrowser/v2/rules"
|
"github.com/filebrowser/filebrowser/v2/rules"
|
||||||
)
|
)
|
||||||
|
|
||||||
const PermFile = 0644
|
const (
|
||||||
const PermDir = 0755
|
PermFile = 0o644
|
||||||
|
PermDir = 0o755
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
reSubDirs = regexp.MustCompile("(?i)^sub(s|titles)$")
|
reSubDirs = regexp.MustCompile("(?i)^sub(s|titles)$")
|
||||||
reSubExts = regexp.MustCompile("(?i)(.vtt|.srt|.ass|.ssa)$")
|
reSubExts = regexp.MustCompile("(?i)(.vtt|.srt|.ass|.ssa)$")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type FileType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
Blob FileType = "blob"
|
||||||
|
Video FileType = "video"
|
||||||
|
Audio FileType = "audio"
|
||||||
|
Image FileType = "image"
|
||||||
|
PDF FileType = "pdf"
|
||||||
|
Text FileType = "text"
|
||||||
|
TextImmutable FileType = "textImmutable"
|
||||||
|
InvalidLink FileType = "invalid_link"
|
||||||
|
)
|
||||||
|
|
||||||
// FileInfo describes a file.
|
// FileInfo describes a file.
|
||||||
type FileInfo struct {
|
type FileInfo struct {
|
||||||
*Listing
|
*Listing
|
||||||
@ -47,7 +62,7 @@ type FileInfo struct {
|
|||||||
Mode os.FileMode `json:"mode"`
|
Mode os.FileMode `json:"mode"`
|
||||||
IsDir bool `json:"isDir"`
|
IsDir bool `json:"isDir"`
|
||||||
IsSymlink bool `json:"isSymlink"`
|
IsSymlink bool `json:"isSymlink"`
|
||||||
Type string `json:"type"`
|
Type FileType `json:"type"`
|
||||||
Subtitles []string `json:"subtitles,omitempty"`
|
Subtitles []string `json:"subtitles,omitempty"`
|
||||||
Content string `json:"content,omitempty"`
|
Content string `json:"content,omitempty"`
|
||||||
Checksums map[string]string `json:"checksums,omitempty"`
|
Checksums map[string]string `json:"checksums,omitempty"`
|
||||||
@ -241,14 +256,14 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error {
|
|||||||
|
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(mimetype, "video"):
|
case strings.HasPrefix(mimetype, "video"):
|
||||||
i.Type = "video"
|
i.Type = Video
|
||||||
i.detectSubtitles()
|
i.detectSubtitles()
|
||||||
return nil
|
return nil
|
||||||
case strings.HasPrefix(mimetype, "audio"):
|
case strings.HasPrefix(mimetype, "audio"):
|
||||||
i.Type = "audio"
|
i.Type = Audio
|
||||||
return nil
|
return nil
|
||||||
case strings.HasPrefix(mimetype, "image"):
|
case strings.HasPrefix(mimetype, "image"):
|
||||||
i.Type = "image"
|
i.Type = Image
|
||||||
resolution, err := calculateImageResolution(i.Fs, i.Path)
|
resolution, err := calculateImageResolution(i.Fs, i.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error calculating image resolution: %v", err)
|
log.Printf("Error calculating image resolution: %v", err)
|
||||||
@ -257,13 +272,13 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
case strings.HasSuffix(mimetype, "pdf"):
|
case strings.HasSuffix(mimetype, "pdf"):
|
||||||
i.Type = "pdf"
|
i.Type = PDF
|
||||||
return nil
|
return nil
|
||||||
case (strings.HasPrefix(mimetype, "text") || !isBinary(buffer)) && i.Size <= 10*1024*1024: // 10 MB
|
case (strings.HasPrefix(mimetype, "text") || !isBinary(buffer)) && i.Size <= 10*1024*1024: // 10 MB
|
||||||
i.Type = "text"
|
i.Type = Text
|
||||||
|
|
||||||
if !modify {
|
if !modify {
|
||||||
i.Type = "textImmutable"
|
i.Type = TextImmutable
|
||||||
}
|
}
|
||||||
|
|
||||||
if saveContent {
|
if saveContent {
|
||||||
@ -277,7 +292,7 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
i.Type = "blob"
|
i.Type = Blob
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
11
http/http.go
11
http/http.go
@ -91,7 +91,16 @@ func NewHandler(
|
|||||||
public.PathPrefix("/dl").Handler(monkey(publicDlHandler, "/api/public/dl/")).Methods("GET")
|
public.PathPrefix("/dl").Handler(monkey(publicDlHandler, "/api/public/dl/")).Methods("GET")
|
||||||
public.PathPrefix("/share").Handler(monkey(publicShareHandler, "/api/public/share/")).Methods("GET")
|
public.PathPrefix("/share").Handler(monkey(publicShareHandler, "/api/public/share/")).Methods("GET")
|
||||||
public.PathPrefix("/preview/{size}/{path:.*}").
|
public.PathPrefix("/preview/{size}/{path:.*}").
|
||||||
Handler(monkey(publicPreviewHandler(imgSvc, fileCache, server.EnableThumbnails, server.ResizePreview), "/api/public/preview")).Methods("GET")
|
Handler(
|
||||||
|
monkey(
|
||||||
|
publicPreviewHandler(
|
||||||
|
imgSvc,
|
||||||
|
fileCache,
|
||||||
|
server.EnableThumbnails,
|
||||||
|
server.ResizePreview,
|
||||||
|
),
|
||||||
|
"/api/public/preview"),
|
||||||
|
).Methods("GET")
|
||||||
|
|
||||||
return stripPrefix(server.BaseURL, r), nil
|
return stripPrefix(server.BaseURL, r), nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -60,8 +60,9 @@ func previewHandler(imgSvc ImgService, fileCache FileCache, enableThumbnails, re
|
|||||||
|
|
||||||
setContentDisposition(w, r, file)
|
setContentDisposition(w, r, file)
|
||||||
|
|
||||||
|
//nolint:exhaustive //only Image type is handled
|
||||||
switch file.Type {
|
switch file.Type {
|
||||||
case "image":
|
case files.Image:
|
||||||
return handleImagePreview(w, r, imgSvc, fileCache, file, previewSize, enableThumbnails, resizePreview)
|
return handleImagePreview(w, r, imgSvc, fileCache, file, previewSize, enableThumbnails, resizePreview)
|
||||||
default:
|
default:
|
||||||
return http.StatusNotImplemented, fmt.Errorf("can't create preview for %s type", file.Type)
|
return http.StatusNotImplemented, fmt.Errorf("can't create preview for %s type", file.Type)
|
||||||
|
|||||||
@ -138,8 +138,9 @@ func publicPreviewHandler(imgSvc ImgService, fileCache FileCache, enableThumbnai
|
|||||||
file := d.raw.(*files.FileInfo)
|
file := d.raw.(*files.FileInfo)
|
||||||
setContentDisposition(w, r, file)
|
setContentDisposition(w, r, file)
|
||||||
|
|
||||||
|
//nolint:exhaustive //only Image type is handled
|
||||||
switch file.Type {
|
switch file.Type {
|
||||||
case "image":
|
case files.Image:
|
||||||
return handleImagePreview(w, r, imgSvc, fileCache, file, previewSize, enableThumbnails, resizePreview)
|
return handleImagePreview(w, r, imgSvc, fileCache, file, previewSize, enableThumbnails, resizePreview)
|
||||||
default:
|
default:
|
||||||
return http.StatusNotImplemented, fmt.Errorf("can't create preview for %s type", file.Type)
|
return http.StatusNotImplemented, fmt.Errorf("can't create preview for %s type", file.Type)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user