README

A library for manipulating ".torrent" files.

Documentation

Index

Constants

View Source
const HashSize = 20

Variables

This section is empty.

Functions

This section is empty.

Types

type AnnounceList

type AnnounceList [][]string

func (AnnounceList) DistinctValues

func (al AnnounceList) DistinctValues() (ret map[string]struct{})

func (AnnounceList) OverridesAnnounce

func (al AnnounceList) OverridesAnnounce(announce string) bool

    Whether the AnnounceList should be preferred over a single URL announce.

    type FileInfo

    type FileInfo struct {
    	Length int64    `bencode:"length"`
    	Path   []string `bencode:"path"`
    }

      Information specific to a single file inside the MetaInfo structure.

      func (*FileInfo) DisplayPath

      func (fi *FileInfo) DisplayPath(info *Info) string

      func (FileInfo) Offset

      func (me FileInfo) Offset(info *Info) (ret int64)

      type Hash

      type Hash [HashSize]byte

        20-byte SHA1 hash used for info and pieces.

        func HashBytes

        func HashBytes(b []byte) (ret Hash)

        func NewHashFromHex

        func NewHashFromHex(s string) (h Hash)

        func (Hash) AsString

        func (h Hash) AsString() string

        func (Hash) Bytes

        func (h Hash) Bytes() []byte

        func (*Hash) FromHexString

        func (h *Hash) FromHexString(s string) (err error)

        func (Hash) HexString

        func (h Hash) HexString() string

        func (Hash) String

        func (h Hash) String() string

        type Info

        type Info struct {
        	PieceLength int64  `bencode:"piece length"`
        	Pieces      []byte `bencode:"pieces"`
        	Name        string `bencode:"name"`
        	Length      int64  `bencode:"length,omitempty"`
        	Private     *bool  `bencode:"private,omitempty"`
        	// TODO: Document this field.
        	Source string     `bencode:"source,omitempty"`
        	Files  []FileInfo `bencode:"files,omitempty"`
        }

          The info dictionary.

          func (*Info) BuildFromFilePath

          func (info *Info) BuildFromFilePath(root string) (err error)

            This is a helper that sets Files and Pieces from a root path and its children.

            func (*Info) GeneratePieces

            func (info *Info) GeneratePieces(open func(fi FileInfo) (io.ReadCloser, error)) error

              Sets Pieces (the block of piece hashes in the Info) by using the passed function to get at the torrent data.

              func (*Info) IsDir

              func (info *Info) IsDir() bool

              func (*Info) NumPieces

              func (info *Info) NumPieces() int

              func (*Info) Piece

              func (info *Info) Piece(index int) Piece

              func (*Info) TotalLength

              func (info *Info) TotalLength() (ret int64)

              func (*Info) UpvertedFiles

              func (info *Info) UpvertedFiles() []FileInfo

                The files field, converted up from the old single-file in the parent info dict if necessary. This is a helper to avoid having to conditionally handle single and multi-file torrent infos.

                type Magnet

                type Magnet struct {
                	InfoHash    Hash
                	Trackers    []string
                	DisplayName string
                }

                  Magnet link components.

                  func ParseMagnetURI

                  func ParseMagnetURI(uri string) (m Magnet, err error)

                    ParseMagnetURI parses Magnet-formatted URIs into a Magnet instance

                    func (Magnet) String

                    func (m Magnet) String() string

                    type MetaInfo

                    type MetaInfo struct {
                    	InfoBytes    bencode.Bytes `bencode:"info,omitempty"`
                    	Announce     string        `bencode:"announce,omitempty"`
                    	AnnounceList AnnounceList  `bencode:"announce-list,omitempty"`
                    	Nodes        []Node        `bencode:"nodes,omitempty"`
                    	CreationDate int64         `bencode:"creation date,omitempty,ignore_unmarshal_type_error"`
                    	Comment      string        `bencode:"comment,omitempty"`
                    	CreatedBy    string        `bencode:"created by,omitempty"`
                    	Encoding     string        `bencode:"encoding,omitempty"`
                    	UrlList      UrlList       `bencode:"url-list,omitempty"`
                    }

                    func Load

                    func Load(r io.Reader) (*MetaInfo, error)

                      Load a MetaInfo from an io.Reader. Returns a non-nil error in case of failure.

                      func LoadFromFile

                      func LoadFromFile(filename string) (*MetaInfo, error)

                        Convenience function for loading a MetaInfo from a file.

                        func (MetaInfo) HashInfoBytes

                        func (mi MetaInfo) HashInfoBytes() (infoHash Hash)

                        func (*MetaInfo) Magnet

                        func (mi *MetaInfo) Magnet(displayName string, infoHash Hash) (m Magnet)

                          Creates a Magnet from a MetaInfo.

                          func (*MetaInfo) SetDefaults

                          func (mi *MetaInfo) SetDefaults()

                            Set good default values in preparation for creating a new MetaInfo file.

                            func (MetaInfo) UnmarshalInfo

                            func (mi MetaInfo) UnmarshalInfo() (info Info, err error)

                            func (*MetaInfo) UpvertedAnnounceList

                            func (mi *MetaInfo) UpvertedAnnounceList() AnnounceList

                              Returns the announce list converted from the old single announce field if necessary.

                              func (MetaInfo) Write

                              func (mi MetaInfo) Write(w io.Writer) error

                                Encode to bencoded form.

                                type Node

                                type Node string

                                func (*Node) UnmarshalBencode

                                func (n *Node) UnmarshalBencode(b []byte) (err error)

                                type Piece

                                type Piece struct {
                                	Info *Info
                                	// contains filtered or unexported fields
                                }

                                func (Piece) Hash

                                func (p Piece) Hash() (ret Hash)

                                func (Piece) Index

                                func (p Piece) Index() pieceIndex

                                func (Piece) Length

                                func (p Piece) Length() int64

                                func (Piece) Offset

                                func (p Piece) Offset() int64

                                type PieceKey

                                type PieceKey struct {
                                	InfoHash Hash
                                	Index    pieceIndex
                                }

                                  Uniquely identifies a piece.

                                  type UrlList

                                  type UrlList []string

                                  func (*UrlList) UnmarshalBencode

                                  func (me *UrlList) UnmarshalBencode(b []byte) error