mirror of
https://github.com/AlistGo/alist.git
synced 2025-04-22 12:58:45 +08:00

* feat(archive): multipart support & sevenzip tool * feat(archive): rardecode tool * feat(archive): support decompress multi-selected * fix(archive): decompress response filter internal * feat(archive): support multipart zip * fix: more applicable AcceptedMultipartExtensions interface
33 lines
673 B
Go
33 lines
673 B
Go
package tool
|
|
|
|
import (
|
|
"github.com/alist-org/alist/v3/internal/errs"
|
|
)
|
|
|
|
var (
|
|
Tools = make(map[string]Tool)
|
|
MultipartExtensions = make(map[string]MultipartExtension)
|
|
)
|
|
|
|
func RegisterTool(tool Tool) {
|
|
for _, ext := range tool.AcceptedExtensions() {
|
|
Tools[ext] = tool
|
|
}
|
|
for mainFile, ext := range tool.AcceptedMultipartExtensions() {
|
|
MultipartExtensions[mainFile] = ext
|
|
Tools[mainFile] = tool
|
|
}
|
|
}
|
|
|
|
func GetArchiveTool(ext string) (*MultipartExtension, Tool, error) {
|
|
t, ok := Tools[ext]
|
|
if !ok {
|
|
return nil, nil, errs.UnknownArchiveFormat
|
|
}
|
|
partExt, ok := MultipartExtensions[ext]
|
|
if !ok {
|
|
return nil, t, nil
|
|
}
|
|
return &partExt, t, nil
|
|
}
|