files

package
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 4, 2021 License: MIT, MIT Imports: 15 Imported by: 0

README

go-ipfs-files

standard-readme compliant

File interfaces and utils used in IPFS

Documentation

https://godoc.org/github.com/ipfs/go-ipfs-files

Contribute

Feel free to join in. All welcome. Open an issue!

This repository falls under the IPFS Code of Conduct.

Want to hack on IPFS?

License

MIT

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotDirectory = errors.New("Couldn't call NextFile(), this isn't a directory")
	ErrNotReader    = errors.New("This file is a directory, can't use Reader functions")
)

Functions

func IsHidden

func IsHidden(f File) bool

Types

type File

type File interface {
	// Files implement ReadCloser, but can only be read from or closed if
	// they are not directories
	io.ReadCloser

	// FileName returns a filename associated with this file
	FileName() string

	// FullPath returns the full path used when adding with this file
	FullPath() string

	// IsDirectory returns true if the File is a directory (and therefore
	// supports calling `NextFile`) and false if the File is a normal file
	// (and therefor supports calling `Read` and `Close`)
	IsDirectory() bool

	// NextFile returns the next child file available (if the File is a
	// directory). It will return (nil, io.EOF) if no more files are
	// available. If the file is a regular file (not a directory), NextFile
	// will return a non-nil error.
	NextFile() (File, error)
}

File is an interface that provides functionality for handling files/directories as values that can be supplied to commands. For directories, child files are accessed serially by calling `NextFile()`.

func NewFileFromPart

func NewFileFromPart(part *multipart.Part) (File, error)

func NewLinkFile

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

func NewSerialFile

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

type FileInfo

type FileInfo interface {
	AbsPath() string
	Stat() os.FileInfo
}

type MultiFileReader

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

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

func NewMultiFileReader

func NewMultiFileReader(file File, form bool) *MultiFileReader

NewMultiFileReader constructs a MultiFileReader. `file` can be any `commands.File`. If `form` is set to true, the multipart data will have a Content-Type of 'multipart/form-data', if `form` is false, the Content-Type will be 'multipart/mixed'.

func (*MultiFileReader) Boundary

func (mfr *MultiFileReader) Boundary() string

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

func (*MultiFileReader) Read

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

type MultipartFile

type MultipartFile struct {
	File

	Part      *multipart.Part
	Reader    *multipart.Reader
	Mediatype string
}

MultipartFile implements File, and is created from a `multipart.Part`. It can be either a directory or file (checked by calling `IsDirectory()`).

func (*MultipartFile) Close

func (f *MultipartFile) Close() error

func (*MultipartFile) FileName

func (f *MultipartFile) FileName() string

func (*MultipartFile) FullPath

func (f *MultipartFile) FullPath() string

func (*MultipartFile) IsDirectory

func (f *MultipartFile) IsDirectory() bool

func (*MultipartFile) NextFile

func (f *MultipartFile) NextFile() (File, error)

func (*MultipartFile) Read

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

type PeekFile

type PeekFile interface {
	SizeFile

	Peek(n int) File
	Length() int
}

type ReaderFile

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 NewReaderFile

func NewReaderFile(filename, path string, reader io.ReadCloser, stat os.FileInfo) *ReaderFile

func NewReaderPathFile

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

func (*ReaderFile) AbsPath

func (f *ReaderFile) AbsPath() string

func (*ReaderFile) Close

func (f *ReaderFile) Close() error

func (*ReaderFile) FileName

func (f *ReaderFile) FileName() string

func (*ReaderFile) FullPath

func (f *ReaderFile) FullPath() string

func (*ReaderFile) IsDirectory

func (f *ReaderFile) IsDirectory() bool

func (*ReaderFile) NextFile

func (f *ReaderFile) NextFile() (File, error)

func (*ReaderFile) Read

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

func (*ReaderFile) Size

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

func (*ReaderFile) Stat

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

type SizeFile

type SizeFile interface {
	File

	Size() (int64, error)
}

type SliceFile

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

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

func NewSliceFile

func NewSliceFile(filename, path string, files []File) *SliceFile

func (*SliceFile) Close

func (f *SliceFile) Close() error

func (*SliceFile) FileName

func (f *SliceFile) FileName() string

func (*SliceFile) FullPath

func (f *SliceFile) FullPath() string

func (*SliceFile) IsDirectory

func (f *SliceFile) IsDirectory() bool

func (*SliceFile) Length

func (f *SliceFile) Length() int

func (*SliceFile) NextFile

func (f *SliceFile) NextFile() (File, error)

func (*SliceFile) Peek

func (f *SliceFile) Peek(n int) File

func (*SliceFile) Read

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

func (*SliceFile) Size

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

type StatFile

type StatFile interface {
	File

	Stat() os.FileInfo
}
type Symlink struct {
	Target string
	// contains filtered or unexported fields
}

func (*Symlink) Close

func (f *Symlink) Close() error

func (*Symlink) FileName

func (f *Symlink) FileName() string

func (*Symlink) FullPath

func (f *Symlink) FullPath() string

func (*Symlink) IsDirectory

func (lf *Symlink) IsDirectory() bool

func (*Symlink) NextFile

func (lf *Symlink) NextFile() (File, error)

func (*Symlink) Read

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

type WebFile

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

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) Close

func (wf *WebFile) Close() error

Close closes the WebFile (or the request body).

func (*WebFile) FileName

func (wf *WebFile) FileName() string

FileName returns the last element of the URL path for this file.

func (*WebFile) FullPath

func (wf *WebFile) FullPath() string

FullPath returns the "Host+Path" for this WebFile.

func (*WebFile) IsDirectory

func (wf *WebFile) IsDirectory() bool

IsDirectory returns false.

func (*WebFile) NextFile

func (wf *WebFile) NextFile() (File, error)

NextFile always returns an ErrNotDirectory error.

func (*WebFile) Read

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL