go-ipfs-files: github.com/ipfs/go-ipfs-files Index | Files

package files

import "github.com/ipfs/go-ipfs-files"

Index

Package Files

file.go filewriter.go is_hidden.go linkfile.go multifilereader.go multipartfile.go readerfile.go serialfile.go slicedirectory.go tarwriter.go util.go walk.go webfile.go

Variables

var (
    ErrNotDirectory = errors.New("file isn't a directory")
    ErrNotReader    = errors.New("file isn't a regular file")

    ErrNotSupported = errors.New("operation not supported")
)

func Walk Uses

func Walk(nd Node, cb func(fpath string, nd Node) error) error

Walk walks a file tree, like `os.Walk`.

func WriteTo Uses

func WriteTo(nd Node, fpath string) error

WriteTo writes the given node to the local filesystem at fpath.

type DirEntry Uses

type DirEntry interface {
    // Name returns base name of this entry, which is the base name of referenced
    // file
    Name() string

    // Node returns the file referenced by this DirEntry
    Node() Node
}

DirEntry exposes information about a directory entry

func FileEntry Uses

func FileEntry(name string, file Node) DirEntry

type DirIterator Uses

type DirIterator interface {
    // DirEntry holds information about current directory entry.
    // Note that after creating new iterator you MUST call Next() at least once
    // before accessing these methods. Calling these methods without prior calls
    // to Next() and after Next() returned false may result in undefined behavior
    DirEntry

    // Next advances iterator to the next file.
    Next() bool

    // Err may return an error after previous call to Next() returned `false`.
    // If previous call to Next() returned `true`, Err() is guaranteed to
    // return nil
    Err() error
}

DirIterator is a iterator over directory entries. See Directory.Entries for more

type Directory Uses

type Directory interface {
    Node

    // Entries returns a stateful iterator over directory entries.
    //
    // Example usage:
    //
    // it := dir.Entries()
    // for it.Next() {
    //   name := it.Name()
    //   file := it.Node()
    //   [...]
    // }
    // if it.Err() != nil {
    //   return err
    // }
    //
    // Note that you can't store the result of it.Node() and use it after
    // advancing the iterator
    Entries() DirIterator
}

Directory is a special file which can link to any number of files.

func DirFromEntry Uses

func DirFromEntry(e DirEntry) Directory

DirFromEntry calls ToDir on Node in the given entry

func NewFileFromPartReader Uses

func NewFileFromPartReader(reader *multipart.Reader, mediatype string) (Directory, error)

NewFileFromPartReader creates a Directory from a multipart reader.

func NewMapDirectory Uses

func NewMapDirectory(f map[string]Node) Directory

func NewSliceDirectory Uses

func NewSliceDirectory(files []DirEntry) Directory

func ToDir Uses

func ToDir(n Node) Directory

ToDir is an alias for n.(Directory). If the file isn't directory, a nil value will be returned

type File Uses

type File interface {
    Node

    io.Reader
    io.Seeker
}

Node represents a regular Unix file

func FileFromEntry Uses

func FileFromEntry(e DirEntry) File

FileFromEntry calls ToFile on Node in the given entry

func NewBytesFile Uses

func NewBytesFile(b []byte) File

func NewLinkFile Uses

func NewLinkFile(target string, stat os.FileInfo) File

func NewReaderFile Uses

func NewReaderFile(reader io.Reader) File

func NewReaderStatFile Uses

func NewReaderStatFile(reader io.Reader, stat os.FileInfo) File

func ToFile Uses

func ToFile(n Node) File

ToFile is an alias for n.(File). If the file isn't a regular file, nil value will be returned

type FileInfo Uses

type FileInfo interface {
    Node

    // AbsPath returns full real file path.
    AbsPath() string

    // Stat returns os.Stat of this file, may be nil for some files
    Stat() os.FileInfo
}

FileInfo exposes information on files in local filesystem

type MultiFileReader Uses

type MultiFileReader struct {
    io.Reader
    // contains filtered or unexported fields
}

MultiFileReader reads from a `commands.Node` (which can be a directory of files or a regular file) as HTTP multipart encoded data.

func NewMultiFileReader Uses

func NewMultiFileReader(file Directory, form bool) *MultiFileReader

NewMultiFileReader constructs a MultiFileReader. `file` can be any `commands.Directory`. If `form` is set to true, the Content-Disposition will be "form-data". Otherwise, it will be "attachment".

func (*MultiFileReader) Boundary Uses

func (mfr *MultiFileReader) Boundary() string

Boundary returns the boundary string to be used to separate files in the multipart data

func (*MultiFileReader) Read Uses

func (mfr *MultiFileReader) Read(buf []byte) (written int, err error)

type Node Uses

type Node interface {
    io.Closer

    // Size returns size of this file (if this file is a directory, total size of
    // all files stored in the tree should be returned). Some implementations may
    // choose not to implement this
    Size() (int64, error)
}

Node is a common interface for files, directories and other special files

func NewSerialFile Uses

func NewSerialFile(path string, hidden bool, stat os.FileInfo) (Node, error)

TODO: test/document limitations

type ReaderFile Uses

type ReaderFile struct {
    // contains filtered or unexported fields
}

ReaderFile is a implementation of File created from an `io.Reader`. ReaderFiles are never directories, and can be read from and closed.

func NewReaderPathFile Uses

func NewReaderPathFile(path string, reader io.ReadCloser, stat os.FileInfo) (*ReaderFile, error)

func (*ReaderFile) AbsPath Uses

func (f *ReaderFile) AbsPath() string

func (*ReaderFile) Close Uses

func (f *ReaderFile) Close() error

func (*ReaderFile) Read Uses

func (f *ReaderFile) Read(p []byte) (int, error)

func (*ReaderFile) Seek Uses

func (f *ReaderFile) Seek(offset int64, whence int) (int64, error)

func (*ReaderFile) Size Uses

func (f *ReaderFile) Size() (int64, error)

func (*ReaderFile) Stat Uses

func (f *ReaderFile) Stat() os.FileInfo

type SliceFile Uses

type SliceFile struct {
    // contains filtered or unexported fields
}

SliceFile implements Node, and provides simple directory handling. It contains children files, and is created from a `[]Node`. SliceFiles are always directories, and can't be read from or closed.

func (*SliceFile) Close Uses

func (f *SliceFile) Close() error

func (*SliceFile) Entries Uses

func (f *SliceFile) Entries() DirIterator

func (*SliceFile) Length Uses

func (f *SliceFile) Length() int

func (*SliceFile) Size Uses

func (f *SliceFile) Size() (int64, error)
type Symlink struct {
    Target string
    // contains filtered or unexported fields
}
func ToSymlink(n Node) *Symlink

func (*Symlink) Close Uses

func (lf *Symlink) Close() error

func (*Symlink) Read Uses

func (lf *Symlink) Read(b []byte) (int, error)

func (*Symlink) Seek Uses

func (lf *Symlink) Seek(offset int64, whence int) (int64, error)

func (*Symlink) Size Uses

func (lf *Symlink) Size() (int64, error)

type TarWriter Uses

type TarWriter struct {
    TarW *tar.Writer
}

func NewTarWriter Uses

func NewTarWriter(w io.Writer) (*TarWriter, error)

NewTarWriter wraps given io.Writer into a new tar writer

func (*TarWriter) Close Uses

func (w *TarWriter) Close() error

Close closes the tar writer.

func (*TarWriter) WriteFile Uses

func (w *TarWriter) WriteFile(nd Node, fpath string) error

WriteNode adds a node to the archive.

type WebFile Uses

type WebFile struct {
    // contains filtered or unexported fields
}

WebFile is an implementation of File which reads it from a Web URL (http). A GET request will be performed against the source when calling Read().

func NewWebFile Uses

func NewWebFile(url *url.URL) *WebFile

NewWebFile creates a WebFile with the given URL, which will be used to perform the GET request on Read().

func (*WebFile) AbsPath Uses

func (wf *WebFile) AbsPath() string

func (*WebFile) Close Uses

func (wf *WebFile) Close() error

Close closes the WebFile (or the request body).

func (*WebFile) Read Uses

func (wf *WebFile) Read(b []byte) (int, error)

Read reads the File from it's web location. On the first call to Read, a GET request will be performed against the WebFile's URL, using Go's default HTTP client. Any further reads will keep reading from the HTTP Request body.

func (*WebFile) Seek Uses

func (wf *WebFile) Seek(offset int64, whence int) (int64, error)

TODO: implement

func (*WebFile) Size Uses

func (wf *WebFile) Size() (int64, error)

func (*WebFile) Stat Uses

func (wf *WebFile) Stat() os.FileInfo

Package files imports 18 packages (graph) and is imported by 88 packages. Updated 2019-09-26. Refresh now. Tools for package owners.