package model import ( "context" "git.kmsign.ru/royalcat/tstor/src/vfs" ) type FsElem interface { Name() string IsDir() bool } func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) (FsEntry, error) { switch e.(type) { case *vfs.ArchiveFS: e := e.(*vfs.ArchiveFS) return ArchiveFs{ Name: e.Name(), Size: e.Size(), FS: e, }, nil case *vfs.ResolverFS: e := e.(*vfs.ResolverFS) return ResolverFs{ Name: e.Name(), FS: e, }, nil // case *torrent.TorrentFS: // e := e.(*torrent.TorrentFS) // torrent, err := MapTorrent(ctx, e.Torrent) // if err != nil { // return nil, err // } // return TorrentFs{ // Name: e.Name(), // Torrent: torrent, // FS: e, // }, nil default: if e.IsDir() { return SimpleDir{ Name: e.Name(), FS: fs, Path: path, }, nil } else { return SimpleFile{ Name: e.Name(), }, nil } } }