fuse integreated
This commit is contained in:
@@ -5,7 +5,6 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
@@ -64,40 +63,32 @@ func (o Object) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error) {
|
||||
})
|
||||
}
|
||||
case DIRECTORY:
|
||||
seen := make(map[string]bool)
|
||||
for _, item := range o.fs.t.GetByDirectory(o.name) {
|
||||
if item.Progress != 100 {
|
||||
for el := o.fs.t.TorrentMap.Front(); el != nil; el = el.Next() {
|
||||
item := el.Value
|
||||
if item.InProgress {
|
||||
continue
|
||||
}
|
||||
if _, exists := seen[item.Name]; exists {
|
||||
continue
|
||||
}
|
||||
seen[item.Name] = true
|
||||
dirs = append(dirs, fuse.Dirent{
|
||||
Name: item.Name,
|
||||
Name: item.AccessKey,
|
||||
Type: fuse.DT_Dir,
|
||||
})
|
||||
}
|
||||
case TORRENT:
|
||||
finalName := make(map[string]bool)
|
||||
for _, item := range o.fs.t.FindAllTorrentsWithName(o.parentName, o.name) {
|
||||
for _, file := range item.SelectedFiles {
|
||||
if file.Link == "" {
|
||||
// log.Println("File has no link, skipping", file.Path)
|
||||
continue
|
||||
}
|
||||
filename := filepath.Base(file.Path)
|
||||
if finalName[filename] {
|
||||
// fragment := davextra.GetLinkFragment(file.Link)
|
||||
// filename = davextra.InsertLinkFragment(filename, fragment)
|
||||
continue
|
||||
}
|
||||
finalName[filename] = true
|
||||
dirs = append(dirs, fuse.Dirent{
|
||||
Name: filename,
|
||||
Type: fuse.DT_File,
|
||||
})
|
||||
torrent, _ := o.fs.t.TorrentMap.Get(o.name)
|
||||
if torrent == nil {
|
||||
return nil, syscall.ENOENT
|
||||
}
|
||||
for el := torrent.SelectedFiles.Front(); el != nil; el = el.Next() {
|
||||
file := el.Value
|
||||
if file.Link == "" {
|
||||
// log.Println("File has no link, skipping", file.Path)
|
||||
continue
|
||||
}
|
||||
filename := filepath.Base(file.Path)
|
||||
dirs = append(dirs, fuse.Dirent{
|
||||
Name: filename,
|
||||
Type: fuse.DT_File,
|
||||
})
|
||||
}
|
||||
}
|
||||
return dirs, nil
|
||||
@@ -119,33 +110,36 @@ func (o Object) Lookup(ctx context.Context, name string) (fs.Node, error) {
|
||||
}
|
||||
}
|
||||
case DIRECTORY:
|
||||
for _, item := range o.fs.t.GetByDirectory(o.name) {
|
||||
if item.Name == name && item.Progress == 100 {
|
||||
return Object{
|
||||
fs: o.fs,
|
||||
objType: TORRENT,
|
||||
parentName: o.name,
|
||||
name: name,
|
||||
mtime: convertRFC3339toTime(item.Added),
|
||||
}, nil
|
||||
}
|
||||
torrent, _ := o.fs.t.TorrentMap.Get(name)
|
||||
if torrent == nil {
|
||||
return nil, syscall.ENOENT
|
||||
}
|
||||
return Object{
|
||||
fs: o.fs,
|
||||
objType: TORRENT,
|
||||
parentName: o.name,
|
||||
name: name,
|
||||
mtime: convertRFC3339toTime(torrent.LatestAdded),
|
||||
}, nil
|
||||
|
||||
case TORRENT:
|
||||
for _, item := range o.fs.t.FindAllTorrentsWithName(o.parentName, o.name) {
|
||||
for _, file := range item.SelectedFiles {
|
||||
if strings.HasSuffix(file.Path, name) && file.Link != "" {
|
||||
return Object{
|
||||
fs: o.fs,
|
||||
objType: FILE,
|
||||
parentName: o.name,
|
||||
name: name,
|
||||
file: &file,
|
||||
size: uint64(file.Bytes),
|
||||
mtime: convertRFC3339toTime(item.Added),
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
torrent, _ := o.fs.t.TorrentMap.Get(name)
|
||||
if torrent == nil {
|
||||
return nil, syscall.ENOENT
|
||||
}
|
||||
file, _ := torrent.SelectedFiles.Get(name)
|
||||
if file == nil {
|
||||
return nil, syscall.ENOENT
|
||||
}
|
||||
return Object{
|
||||
fs: o.fs,
|
||||
objType: FILE,
|
||||
parentName: o.name,
|
||||
name: name,
|
||||
file: file,
|
||||
size: uint64(file.Bytes),
|
||||
mtime: convertRFC3339toTime(torrent.LatestAdded),
|
||||
}, nil
|
||||
}
|
||||
return nil, syscall.ENOENT
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user