From: Matt Joiner Date: Wed, 4 Jan 2017 06:15:11 +0000 (+1100) Subject: metainfo: Add helper methods to FileInfo X-Git-Tag: v1.0.0~499 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=51bae0a3c8d9205b65e30e839893086fcbdb3eb4;p=btrtrc.git metainfo: Add helper methods to FileInfo --- diff --git a/metainfo/fileinfo.go b/metainfo/fileinfo.go new file mode 100644 index 00000000..ff2d5631 --- /dev/null +++ b/metainfo/fileinfo.go @@ -0,0 +1,27 @@ +package metainfo + +import "strings" + +// Information specific to a single file inside the MetaInfo structure. +type FileInfo struct { + Length int64 `bencode:"length"` + Path []string `bencode:"path"` +} + +func (fi *FileInfo) DisplayPath(info *Info) string { + if info.IsDir() { + return strings.Join(fi.Path, "/") + } else { + return info.Name + } +} + +func (me FileInfo) Offset(info *Info) (ret int64) { + for _, fi := range info.Files { + if me.DisplayPath(info) == fi.DisplayPath(info) { + return + } + ret += fi.Length + } + panic("not found") +} diff --git a/metainfo/metainfo.go b/metainfo/metainfo.go index 96a64cbc..ea09cce5 100644 --- a/metainfo/metainfo.go +++ b/metainfo/metainfo.go @@ -20,12 +20,6 @@ type MetaInfo struct { URLList interface{} `bencode:"url-list,omitempty"` } -// Information specific to a single file inside the MetaInfo structure. -type FileInfo struct { - Length int64 `bencode:"length"` - Path []string `bencode:"path"` -} - // Load a MetaInfo from an io.Reader. Returns a non-nil error in case of // failure. func Load(r io.Reader) (*MetaInfo, error) {