fs

package
v0.0.0-...-9f689ac Latest Latest
Warning

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

Go to latest
Published: Oct 1, 2017 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrorNotFoundInConfigFile is returned by NewFs if not found in config file
	ErrorNotFoundInConfigFile        = errors.New("didn't find section in config file")
	ErrorCantPurge                   = errors.New("can't purge directory")
	ErrorCantCopy                    = errors.New("can't copy object - incompatible remotes")
	ErrorCantMove                    = errors.New("can't move object - incompatible remotes")
	ErrorCantDirMove                 = errors.New("can't move directory - incompatible remotes")
	ErrorDirExists                   = errors.New("can't copy directory - destination already exists")
	ErrorCantSetModTime              = errors.New("can't set modified time")
	ErrorCantSetModTimeWithoutDelete = errors.New("can't set modified time without deleting existing object")
	ErrorDirNotFound                 = errors.New("directory not found")
	ErrorObjectNotFound              = errors.New("object not found")
	ErrorLevelNotSupported           = errors.New("level value not supported")
	ErrorListAborted                 = errors.New("list aborted")
	ErrorListBucketRequired          = errors.New("bucket or container name is needed in remote")
	ErrorIsFile                      = errors.New("is a file not a directory")
	ErrorNotAFile                    = errors.New("is a not a regular file")
	ErrorNotDeleting                 = errors.New("not deleting files as there were IO errors")
	ErrorNotDeletingDirs             = errors.New("not deleting directories as there were IO errors")
	ErrorCantMoveOverlapping         = errors.New("can't move files on overlapping remotes")
	ErrorDirectoryNotEmpty           = errors.New("directory not empty")
	ErrorImmutableModified           = errors.New("immutable file modified")
)

Globals

View Source
var (
	// Config is the global config
	Config = &ConfigInfo{
		LowLevelRetries: 3,
	}
)

Global

View Source
var ErrHashUnsupported = errors.New("hash type not supported")

ErrHashUnsupported should be returned by filesystem, if it is requested to deliver an unsupported hash type.

View Source
var HashWidth = map[HashType]int{
	HashMD5:     32,
	HashSHA1:    40,
	HashDropbox: 64,
}

HashWidth returns the width in characters for any HashType

SupportedHashes returns a set of all the supported hashes by HashStream and MultiHasher.

Functions

func BoolP

func BoolP(name, shorthand string, value bool, usage string) (out *bool)

BoolP defines a flag which can be overridden by an environment variable

It is a thin wrapper around pflag.BoolP

func Cause

func Cause(cause error) (retriable bool, err error)

Cause is a souped up errors.Cause which can unwrap some standard library errors too. It returns true if any of the intermediate errors had a Timeout() or Temporary() method which returned true.

func CountP

func CountP(name, shorthand string, usage string) (out *int)

CountP defines a flag which can be overridden by an environment variable

It is a thin wrapper around pflag.CountP

func Debugf

func Debugf(o interface{}, text string, args ...interface{})

Debugf writes debugging output for this Object or Fs. Use this for debug only. The user must have to specify -vv to see this.

func DurationP

func DurationP(name, shorthand string, value time.Duration, usage string) (out *time.Duration)

DurationP defines a flag which can be overridden by an environment variable

It is a thin wrapper around pflag.DurationP

func Errorf

func Errorf(o interface{}, text string, args ...interface{})

Errorf writes error log output for this Object or Fs. It should always be seen by the user.

func FatalError

func FatalError(err error) error

FatalError makes an error which indicates it is a fatal error and the sync should stop.

func Float64P

func Float64P(name, shorthand string, value float64, usage string) (out *float64)

Float64P defines a flag which can be overridden by an environment variable

It is a thin wrapper around pflag.Float64P

func HashStream

func HashStream(r io.Reader) (map[HashType]string, error)

HashStream will calculate hashes of all supported hash types.

func HashStreamTypes

func HashStreamTypes(r io.Reader, set HashSet) (map[HashType]string, error)

HashStreamTypes will calculate hashes of the requested hash types.

func Infof

func Infof(o interface{}, text string, args ...interface{})

Infof writes info on transfers for this Object or Fs. Use this level for logging transfers, deletions and things which should appear with the -v flag.

func InitLogging

func InitLogging()

InitLogging start the logging as per the command line flags

func IntP

func IntP(name, shorthand string, value int, usage string) (out *int)

IntP defines a flag which can be overridden by an environment variable

It is a thin wrapper around pflag.IntP

func IsFatalError

func IsFatalError(err error) bool

IsFatalError returns true if err conforms to the Fatal interface and calling the Fatal method returns true.

func IsNoRetryError

func IsNoRetryError(err error) bool

IsNoRetryError returns true if err conforms to the NoRetry interface and calling the NoRetry method returns true.

func IsRetryError

func IsRetryError(err error) bool

IsRetryError returns true if err conforms to the Retry interface and calling the Retry method returns true.

func LogLevelPrintf

func LogLevelPrintf(level LogLevel, o interface{}, text string, args ...interface{})

LogLevelPrintf writes logs at the given level

func Logf

func Logf(o interface{}, text string, args ...interface{})

Logf writes log output for this Object or Fs. This should be considered to be Info level logging. It is the default level. By default rclone should not log very much so only use this for important things the user should see. The user can filter these out with the -q flag.

func NoRetryError

func NoRetryError(err error) error

NoRetryError makes an error which indicates the sync shouldn't be retried.

func OpenOptionAddHTTPHeaders

func OpenOptionAddHTTPHeaders(headers http.Header, options []OpenOption)

OpenOptionAddHTTPHeaders Sets each header found in options to the http.Header map provided the key was non empty.

func OpenOptionAddHeaders

func OpenOptionAddHeaders(options []OpenOption, headers map[string]string)

OpenOptionAddHeaders adds each header found in options to the headers map provided the key was non empty.

func OpenOptionHeaders

func OpenOptionHeaders(options []OpenOption) (headers map[string]string)

OpenOptionHeaders adds each header found in options to the headers map provided the key was non empty.

It returns a nil map if options was empty

func RetryError

func RetryError(err error) error

RetryError makes an error which indicates it would like to be retried

func RetryErrorf

func RetryErrorf(format string, a ...interface{}) error

RetryErrorf makes an error which indicates it would like to be retried

func ShouldRetry

func ShouldRetry(err error) bool

ShouldRetry looks at an error and tries to work out if retrying the operation that caused it would be a good idea. It returns true if the error implements Timeout() or Temporary() or if the error indicates a premature closing of the connection.

func ShouldRetryHTTP

func ShouldRetryHTTP(resp *http.Response, retryErrorCodes []int) bool

ShouldRetryHTTP returns a boolean as to whether this resp deserves. It checks to see if the HTTP response code is in the slice retryErrorCodes.

func StringArrayP

func StringArrayP(name, shorthand string, value []string, usage string) (out *[]string)

StringArrayP defines a flag which can be overridden by an environment variable

It sets one value only - command line flags can be used to set more.

It is a thin wrapper around pflag.StringArrayP

func StringP

func StringP(name, shorthand string, value string, usage string) (out *string)

StringP defines a flag which can be overridden by an environment variable

It is a thin wrapper around pflag.StringP

func Trace

func Trace(o interface{}, format string, a ...interface{}) func(string, ...interface{})

Trace debugs the entry and exit of the calling function

It is designed to be used in a defer statement so it returns a function that logs the exit parameters.

Any pointers in the exit function will be dereferenced

func VarP

func VarP(value pflag.Value, name, shorthand, usage string)

VarP defines a flag which can be overridden by an environment variable

It is a thin wrapper around pflag.VarP

Types

type BwTimeSlot

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

BwTimeSlot represents a bandwidth configuration at a point in time.

type BwTimetable

type BwTimetable []BwTimeSlot

BwTimetable contains all configured time slots.

func (BwTimetable) LimitAt

func (x BwTimetable) LimitAt(tt time.Time) BwTimeSlot

LimitAt returns a BwTimeSlot for the time requested.

func (*BwTimetable) Set

func (x *BwTimetable) Set(s string) error

Set the bandwidth timetable.

func (BwTimetable) String

func (x BwTimetable) String() string

String returns a printable representation of BwTimetable.

func (BwTimetable) Type

func (x BwTimetable) Type() string

Type of the value

type CleanUpper

type CleanUpper interface {
	// CleanUp the trash in the Fs
	//
	// Implement this if you have a way of emptying the trash or
	// otherwise cleaning up old versions of files.
	CleanUp() error
}

CleanUpper is an optional interfaces for Fs

type ConfigInfo

type ConfigInfo struct {
	LogLevel       LogLevel
	StatsLogLevel  LogLevel
	DryRun         bool
	CheckSum       bool
	SizeOnly       bool
	IgnoreTimes    bool
	IgnoreExisting bool
	ModifyWindow   time.Duration
	Checkers       int
	Transfers      int
	ConnectTimeout time.Duration // Connect timeout
	Timeout        time.Duration // Data channel timeout
	DumpHeaders    bool
	DumpBodies     bool
	DumpAuth       bool
	//Filter             *Filter
	InsecureSkipVerify bool // Skip server certificate verification
	//DeleteMode         DeleteMode
	TrackRenames    bool // Track file renames.
	LowLevelRetries int
	UpdateOlder     bool // Skip files that are newer on the destination
	NoGzip          bool // Disable compression
	MaxDepth        int
	IgnoreSize      bool
	IgnoreChecksum  bool
	NoTraverse      bool
	NoUpdateModTime bool
	DataRateUnit    string
	BackupDir       string
	Suffix          string
	UseListR        bool
	//BufferSize         SizeSuffix
	TPSLimit        float64
	TPSLimitBurst   int
	BindAddr        net.IP
	DisableFeatures []string
	Immutable       bool
}

ConfigInfo is filesystem config options

type Copier

type Copier interface {
	// Copy src to this remote using server side copy operations.
	//
	// This is stored with the remote path given
	//
	// It returns the destination Object and a possible error
	//
	// Will only be called if src.Fs().Name() == f.Name()
	//
	// If it isn't possible then return fs.ErrorCantCopy
	Copy(src Object, remote string) (Object, error)
}

Copier is an optional interface for Fs

type CountingReader

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

CountingReader holds a reader and a read count of how many bytes were read so far.

func NewCountingReader

func NewCountingReader(in io.Reader) *CountingReader

NewCountingReader returns a CountingReader, which will read from the given reader while keeping track of how many bytes were read.

func (*CountingReader) BytesRead

func (cr *CountingReader) BytesRead() uint64

BytesRead returns how many bytes were read from the underlying reader so far.

func (*CountingReader) Read

func (cr *CountingReader) Read(b []byte) (int, error)

Read reads from the underlying reader.

type Dir

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

Dir describes an unspecialized directory for directory/container/bucket lists

func NewDir

func NewDir(remote string, modTime time.Time) *Dir

NewDir creates an unspecialized Directory object

func NewDirCopy

func NewDirCopy(d Directory) *Dir

NewDirCopy creates an unspecialized copy of the Directory object passed in

func (*Dir) ID

func (d *Dir) ID() string

ID gets the optional ID

func (*Dir) Items

func (d *Dir) Items() int64

Items returns the count of items in this directory or this directory and subdirectories if known, -1 for unknown

func (*Dir) ModTime

func (d *Dir) ModTime() time.Time

ModTime returns the modification date of the file It should return a best guess if one isn't available

func (*Dir) Remote

func (d *Dir) Remote() string

Remote returns the remote path

func (*Dir) SetID

func (d *Dir) SetID(id string) *Dir

SetID sets the optional ID

func (*Dir) SetItems

func (d *Dir) SetItems(items int64) *Dir

SetItems sets the number of items in the directory

func (*Dir) SetRemote

func (d *Dir) SetRemote(remote string) *Dir

SetRemote sets the remote

func (*Dir) SetSize

func (d *Dir) SetSize(size int64) *Dir

SetSize sets the size of the directory

func (*Dir) Size

func (d *Dir) Size() int64

Size returns the size of the file

func (*Dir) String

func (d *Dir) String() string

String returns the name

type DirCacheFlusher

type DirCacheFlusher interface {
	// DirCacheFlush resets the directory cache - used in testing
	// as an optional interface
	DirCacheFlush()
}

DirCacheFlusher is an optional interface for Fs

type DirChangeNotifier

type DirChangeNotifier interface {
	// DirChangeNotify calls the passed function with a path
	// of a directory that has had changes. If the implementation
	// uses polling, it should adhere to the given interval.
	DirChangeNotify(func(string), time.Duration) chan bool
}

DirChangeNotifier is an optional interface for Fs

type DirEntries

type DirEntries []DirEntry

DirEntries is a slice of Object or *Dir

func (DirEntries) ForDir

func (ds DirEntries) ForDir(fn func(dir Directory))

ForDir runs the function supplied on every Directory in the entries

func (DirEntries) ForDirError

func (ds DirEntries) ForDirError(fn func(dir Directory) error) error

ForDirError runs the function supplied on every Directory in the entries

func (DirEntries) ForObject

func (ds DirEntries) ForObject(fn func(o Object))

ForObject runs the function supplied on every object in the entries

func (DirEntries) ForObjectError

func (ds DirEntries) ForObjectError(fn func(o Object) error) error

ForObjectError runs the function supplied on every object in the entries

func (DirEntries) Len

func (ds DirEntries) Len() int

Len is part of sort.Interface.

func (DirEntries) Less

func (ds DirEntries) Less(i, j int) bool

Less is part of sort.Interface.

func (DirEntries) Swap

func (ds DirEntries) Swap(i, j int)

Swap is part of sort.Interface.

type DirEntry

type DirEntry interface {
	// String returns a description of the Object
	String() string

	// Remote returns the remote path
	Remote() string

	// ModTime returns the modification date of the file
	// It should return a best guess if one isn't available
	ModTime() time.Time

	// Size returns the size of the file
	Size() int64
}

DirEntry provides read only information about the common subset of a Dir or Object. These are returned from directory listings - type assert them into the correct type.

type DirMover

type DirMover interface {
	// DirMove moves src, srcRemote to this remote at dstRemote
	// using server side move operations.
	//
	// Will only be called if src.Fs().Name() == f.Name()
	//
	// If it isn't possible then return fs.ErrorCantDirMove
	//
	// If destination exists then return fs.ErrorDirExists
	DirMove(src Fs, srcRemote, dstRemote string) error
}

DirMover is an optional interface for Fs

type Directory

type Directory interface {
	DirEntry

	// Items returns the count of items in this directory or this
	// directory and subdirectories if known, -1 for unknown
	Items() int64

	// ID returns the internal ID of this directory if known, or
	// "" otherwise
	ID() string
}

Directory is a filesystem like directory provided by an Fs

type Fataler

type Fataler interface {
	error
	Fatal() bool
}

Fataler is an optional interface for error as to whether the operation should cause the entire operation to finish immediately.

This should be returned from Update or Put methods as required

type Features

type Features struct {
	// Feature flags, whether Fs
	CaseInsensitive         bool // has case insensitive files
	DuplicateFiles          bool // allows duplicate files
	ReadMimeType            bool // can read the mime type of objects
	WriteMimeType           bool // can set the mime type of objects
	CanHaveEmptyDirectories bool // can have empty directories
	BucketBased             bool // is bucket based (like s3, swift etc)

	// Purge all files in the root and the root directory
	//
	// Implement this if you have a way of deleting all the files
	// quicker than just running Remove() on the result of List()
	//
	// Return an error if it doesn't exist
	Purge func() error

	// Copy src to this remote using server side copy operations.
	//
	// This is stored with the remote path given
	//
	// It returns the destination Object and a possible error
	//
	// Will only be called if src.Fs().Name() == f.Name()
	//
	// If it isn't possible then return fs.ErrorCantCopy
	Copy func(src Object, remote string) (Object, error)

	// Move src to this remote using server side move operations.
	//
	// This is stored with the remote path given
	//
	// It returns the destination Object and a possible error
	//
	// Will only be called if src.Fs().Name() == f.Name()
	//
	// If it isn't possible then return fs.ErrorCantMove
	Move func(src Object, remote string) (Object, error)

	// DirMove moves src, srcRemote to this remote at dstRemote
	// using server side move operations.
	//
	// Will only be called if src.Fs().Name() == f.Name()
	//
	// If it isn't possible then return fs.ErrorCantDirMove
	//
	// If destination exists then return fs.ErrorDirExists
	DirMove func(src Fs, srcRemote, dstRemote string) error

	// DirChangeNotify calls the passed function with a path
	// of a directory that has had changes. If the implementation
	// uses polling, it should adhere to the given interval.
	DirChangeNotify func(func(string), time.Duration) chan bool

	// UnWrap returns the Fs that this Fs is wrapping
	UnWrap func() Fs

	// DirCacheFlush resets the directory cache - used in testing
	// as an optional interface
	DirCacheFlush func()

	// Put in to the remote path with the modTime given of the given size
	//
	// May create the object even if it returns an error - if so
	// will return the object and the error, otherwise will return
	// nil and the error
	//
	// May create duplicates or return errors if src already
	// exists.
	PutUnchecked func(in io.Reader, src ObjectInfo, options ...OpenOption) (Object, error)

	// PutStream uploads to the remote path with the modTime given of indeterminate size
	//
	// May create the object even if it returns an error - if so
	// will return the object and the error, otherwise will return
	// nil and the error
	PutStream func(in io.Reader, src ObjectInfo, options ...OpenOption) (Object, error)

	// MergeDirs merges the contents of all the directories passed
	// in into the first one and rmdirs the other directories.
	MergeDirs func([]Directory) error

	// CleanUp the trash in the Fs
	//
	// Implement this if you have a way of emptying the trash or
	// otherwise cleaning up old versions of files.
	CleanUp func() error

	// ListR lists the objects and directories of the Fs starting
	// from dir recursively into out.
	//
	// dir should be "" to start from the root, and should not
	// have trailing slashes.
	//
	// This should return ErrDirNotFound if the directory isn't
	// found.
	//
	// It should call callback for each tranche of entries read.
	// These need not be returned in any particular order.  If
	// callback returns an error then the listing will stop
	// immediately.
	//
	// Don't implement this unless you have a more efficient way
	// of listing recursively that doing a directory traversal.
	ListR ListRFn
}

Features describe the optional features of the Fs

func (*Features) Disable

func (ft *Features) Disable(name string) *Features

Disable nil's out the named feature. If it isn't found then it will log a message.

func (*Features) DisableList

func (ft *Features) DisableList(list []string) *Features

DisableList nil's out the comma separated list of named features. If it isn't found then it will log a message.

func (*Features) Fill

func (ft *Features) Fill(f Fs) *Features

Fill fills in the function pointers in the Features struct from the optional interfaces. It returns the original updated Features struct passed in.

func (*Features) List

func (ft *Features) List() (out []string)

List returns a slice of all the possible feature names

func (*Features) Mask

func (ft *Features) Mask(f Fs) *Features

Mask the Features with the Fs passed in

Only optional features which are implemented in both the original Fs AND the one passed in will be advertised. Any features which aren't in both will be set to false/nil, except for UnWrap which will be left untouched.

func (*Features) Wrap

func (ft *Features) Wrap(f Fs) *Features

Wrap makes a Copy of the features passed in, overriding the UnWrap method only if available in f.

type Fs

type Fs interface {
	Info

	// List the objects and directories in dir into entries.  The
	// entries can be returned in any order but should be for a
	// complete directory.
	//
	// dir should be "" to list the root, and should not have
	// trailing slashes.
	//
	// This should return ErrDirNotFound if the directory isn't
	// found.
	List(dir string) (entries DirEntries, err error)

	// NewObject finds the Object at remote.  If it can't be found
	// it returns the error ErrorObjectNotFound.
	NewObject(remote string) (Object, error)

	// Put in to the remote path with the modTime given of the given size
	//
	// May create the object even if it returns an error - if so
	// will return the object and the error, otherwise will return
	// nil and the error
	Put(in io.Reader, src ObjectInfo, options ...OpenOption) (Object, error)

	// Mkdir makes the directory (container, bucket)
	//
	// Shouldn't return an error if it already exists
	Mkdir(dir string) error

	// Rmdir removes the directory (container, bucket) if empty
	//
	// Return an error if it doesn't exist or isn't empty
	Rmdir(dir string) error
}

Fs is the interface a cloud storage system must provide

type HTTPOption

type HTTPOption struct {
	Key   string
	Value string
}

HTTPOption defines a general purpose HTTP option

func (*HTTPOption) Header

func (o *HTTPOption) Header() (key string, value string)

Header formats the option as an http header

func (*HTTPOption) Mandatory

func (o *HTTPOption) Mandatory() bool

Mandatory returns whether the option must be parsed or can be ignored

func (*HTTPOption) String

func (o *HTTPOption) String() string

String formats the option into human readable form

type HashSet

type HashSet int

A HashSet Indicates one or more hash types.

func NewHashSet

func NewHashSet(t ...HashType) HashSet

NewHashSet will create a new hash set with the hash types supplied

func (*HashSet) Add

func (h *HashSet) Add(t ...HashType) HashSet

Add one or more hash types to the set. Returns the modified hash set.

func (HashSet) Array

func (h HashSet) Array() (ht []HashType)

Array returns an array of all hash types in the set

func (HashSet) Contains

func (h HashSet) Contains(t HashType) bool

Contains returns true if the

func (HashSet) Count

func (h HashSet) Count() int

Count returns the number of hash types in the set

func (HashSet) GetOne

func (h HashSet) GetOne() HashType

GetOne will return a hash type. Currently the first is returned, but it could be improved to return the strongest.

func (HashSet) Overlap

func (h HashSet) Overlap(t HashSet) HashSet

Overlap returns the overlapping hash types

func (HashSet) String

func (h HashSet) String() string

String returns a string representation of the hash set. The function will panic if it contains an unknown type.

func (HashSet) SubsetOf

func (h HashSet) SubsetOf(c HashSet) bool

SubsetOf will return true if all types of h is present in the set c

type HashType

type HashType int

HashType indicates a standard hashing algorithm

const (
	// HashMD5 indicates MD5 support
	HashMD5 HashType = 1 << iota

	// HashSHA1 indicates SHA-1 support
	HashSHA1

	// HashDropbox indicates Dropbox special hash
	// https://www.dropbox.com/developers/reference/content-hash
	HashDropbox

	// HashNone indicates no hashes are supported
	HashNone HashType = 0
)

func (HashType) String

func (h HashType) String() string

String returns a string representation of the hash type. The function will panic if the hash type is unknown.

type HashesOption

type HashesOption struct {
	Hashes HashSet
}

HashesOption defines an option used to tell the local fs to limit the number of hashes it calculates.

func (*HashesOption) Header

func (o *HashesOption) Header() (key string, value string)

Header formats the option as an http header

func (*HashesOption) Mandatory

func (o *HashesOption) Mandatory() bool

Mandatory returns whether the option must be parsed or can be ignored

func (*HashesOption) String

func (o *HashesOption) String() string

String formats the option into human readable form

type Info

type Info interface {
	// Name of the remote (as passed into NewFs)
	Name() string

	// Root of the remote (as passed into NewFs)
	Root() string

	// String returns a description of the FS
	String() string

	// Precision of the ModTimes in this Fs
	Precision() time.Duration

	// Returns the supported hash types of the filesystem
	Hashes() HashSet

	// Features returns the optional features of this Fs
	Features() *Features
}

Info provides a read only interface to information about a filesystem.

type ListRCallback

type ListRCallback func(entries DirEntries) error

ListRCallback defines a callback function for ListR to use

It is called for each tranche of entries read from the listing and if it returns an error, the listing stops.

type ListRFn

type ListRFn func(dir string, callback ListRCallback) error

ListRFn is defines the call used to recursively list a directory

type ListRer

type ListRer interface {
	// ListR lists the objects and directories of the Fs starting
	// from dir recursively into out.
	//
	// dir should be "" to start from the root, and should not
	// have trailing slashes.
	//
	// This should return ErrDirNotFound if the directory isn't
	// found.
	//
	// It should call callback for each tranche of entries read.
	// These need not be returned in any particular order.  If
	// callback returns an error then the listing will stop
	// immediately.
	//
	// Don't implement this unless you have a more efficient way
	// of listing recursively that doing a directory traversal.
	ListR(dir string, callback ListRCallback) error
}

ListRer is an optional interfaces for Fs

type LogLevel

type LogLevel byte

LogLevel describes rclone's logs. These are a subset of the syslog log levels.

const (
	LogLevelEmergency LogLevel = iota
	LogLevelAlert
	LogLevelCritical
	LogLevelError // Error - can't be suppressed
	LogLevelWarning
	LogLevelNotice // Normal logging, -q suppresses
	LogLevelInfo   // Transfers, needs -v
	LogLevelDebug  // Debug level, needs -vv
)

Log levels. These are the syslog levels of which we only use a subset.

LOG_EMERG      system is unusable
LOG_ALERT      action must be taken immediately
LOG_CRIT       critical conditions
LOG_ERR        error conditions
LOG_WARNING    warning conditions
LOG_NOTICE     normal, but significant, condition
LOG_INFO       informational message
LOG_DEBUG      debug-level message

func (*LogLevel) Set

func (l *LogLevel) Set(s string) error

Set a LogLevel

func (LogLevel) String

func (l LogLevel) String() string

String turns a LogLevel into a string

func (*LogLevel) Type

func (l *LogLevel) Type() string

Type of the value

type MergeDirser

type MergeDirser interface {
	// MergeDirs merges the contents of all the directories passed
	// in into the first one and rmdirs the other directories.
	MergeDirs([]Directory) error
}

MergeDirser is an option interface for Fs

type MimeTyper

type MimeTyper interface {
	// MimeType returns the content type of the Object if
	// known, or "" if not
	MimeType() string
}

MimeTyper is an optional interface for Object

type Mover

type Mover interface {
	// Move src to this remote using server side move operations.
	//
	// This is stored with the remote path given
	//
	// It returns the destination Object and a possible error
	//
	// Will only be called if src.Fs().Name() == f.Name()
	//
	// If it isn't possible then return fs.ErrorCantMove
	Move(src Object, remote string) (Object, error)
}

Mover is an optional interface for Fs

type MultiHasher

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

A MultiHasher will construct various hashes on all incoming writes.

func NewMultiHasher

func NewMultiHasher() *MultiHasher

NewMultiHasher will return a hash writer that will write all supported hash types.

func NewMultiHasherTypes

func NewMultiHasherTypes(set HashSet) (*MultiHasher, error)

NewMultiHasherTypes will return a hash writer that will write the requested hash types.

func (*MultiHasher) Size

func (m *MultiHasher) Size() int64

Size returns the number of bytes written

func (*MultiHasher) Sums

func (m *MultiHasher) Sums() map[HashType]string

Sums returns the sums of all accumulated hashes as hex encoded strings.

func (*MultiHasher) Write

func (m *MultiHasher) Write(p []byte) (n int, err error)

type NoRetrier

type NoRetrier interface {
	error
	NoRetry() bool
}

NoRetrier is an optional interface for error as to whether the operation should not be retried at a high level.

If only NoRetry errors are returned in a sync then the sync won't be retried.

This should be returned from Update or Put methods as required

type Object

type Object interface {
	ObjectInfo

	// SetModTime sets the metadata on the object to set the modification date
	SetModTime(time.Time) error

	// Open opens the file for read.  Call Close() on the returned io.ReadCloser
	Open(options ...OpenOption) (io.ReadCloser, error)

	// Update in to the object with the modTime given of the given size
	Update(in io.Reader, src ObjectInfo, options ...OpenOption) error

	// Removes this object
	Remove() error
}

Object is a filesystem like object provided by an Fs

type ObjectInfo

type ObjectInfo interface {
	DirEntry

	// Fs returns read only access to the Fs that this object is part of
	Fs() Info

	// Hash returns the selected checksum of the file
	// If no checksum is available it returns ""
	Hash(HashType) (string, error)

	// Storable says whether this object can be stored
	Storable() bool
}

ObjectInfo provides read only information about an object.

func NewStaticObjectInfo

func NewStaticObjectInfo(remote string, modTime time.Time, size int64, storable bool, hashes map[HashType]string, fs Info) ObjectInfo

NewStaticObjectInfo returns a static ObjectInfo If hashes is nil and fs is not nil, the hash map will be replaced with empty hashes of the types supported by the fs.

type OpenOption

type OpenOption interface {
	fmt.Stringer

	// Header returns the option as an HTTP header
	Header() (key string, value string)

	// Mandatory returns whether this option can be ignored or not
	Mandatory() bool
}

OpenOption is an interface describing options for Open

type Purger

type Purger interface {
	// Purge all files in the root and the root directory
	//
	// Implement this if you have a way of deleting all the files
	// quicker than just running Remove() on the result of List()
	//
	// Return an error if it doesn't exist
	Purge() error
}

Purger is an optional interfaces for Fs

type PutStreamer

type PutStreamer interface {
	// PutStream uploads to the remote path with the modTime given of indeterminate size
	//
	// May create the object even if it returns an error - if so
	// will return the object and the error, otherwise will return
	// nil and the error
	PutStream(in io.Reader, src ObjectInfo, options ...OpenOption) (Object, error)
}

PutStreamer is an optional interface for Fs

type PutUncheckeder

type PutUncheckeder interface {
	// Put in to the remote path with the modTime given of the given size
	//
	// May create the object even if it returns an error - if so
	// will return the object and the error, otherwise will return
	// nil and the error
	//
	// May create duplicates or return errors if src already
	// exists.
	PutUnchecked(in io.Reader, src ObjectInfo, options ...OpenOption) (Object, error)
}

PutUncheckeder is an optional interface for Fs

type RangeOption

type RangeOption struct {
	Start int64
	End   int64
}

RangeOption defines an HTTP Range option with start and end. If either start or end are < 0 then they will be omitted.

func (*RangeOption) Header

func (o *RangeOption) Header() (key string, value string)

Header formats the option as an http header

func (*RangeOption) Mandatory

func (o *RangeOption) Mandatory() bool

Mandatory returns whether the option must be parsed or can be ignored

func (*RangeOption) String

func (o *RangeOption) String() string

String formats the option into human readable form

type Retrier

type Retrier interface {
	error
	Retry() bool
}

Retrier is an optional interface for error as to whether the operation should be retried at a high level.

This should be returned from Update or Put methods as required

type SeekOption

type SeekOption struct {
	Offset int64
}

SeekOption defines an HTTP Range option with start only.

func (*SeekOption) Header

func (o *SeekOption) Header() (key string, value string)

Header formats the option as an http header

func (*SeekOption) Mandatory

func (o *SeekOption) Mandatory() bool

Mandatory returns whether the option must be parsed or can be ignored

func (*SeekOption) String

func (o *SeekOption) String() string

String formats the option into human readable form

type SizeSuffix

type SizeSuffix int64

SizeSuffix is parsed by flag with k/M/G suffixes

func (*SizeSuffix) Set

func (x *SizeSuffix) Set(s string) error

Set a SizeSuffix

func (SizeSuffix) String

func (x SizeSuffix) String() string

String turns SizeSuffix into a string

func (*SizeSuffix) Type

func (x *SizeSuffix) Type() string

Type of the value

func (SizeSuffix) Unit

func (x SizeSuffix) Unit(unit string) string

Unit turns SizeSuffix into a string with a unit

type UnWrapper

type UnWrapper interface {
	// UnWrap returns the Fs that this Fs is wrapping
	UnWrap() Fs
}

UnWrapper is an optional interfaces for Fs

Jump to

Keyboard shortcuts

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