fichier

package
v0.0.0-...-b4aeae5 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2024 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

Package fichier provides an interface to the 1Fichier storage system.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFs

func NewFs(ctx context.Context, name string, root string, config configmap.Mapper) (fs.Fs, error)

NewFs makes a new Fs object from the path

The path is of the form remote:path

Remotes are looked up in the config file. If the remote isn't found then NotFoundInConfigFile will be returned.

On Windows avoid single character remote names as they can be mixed up with drive letters.

Types

type AccountInfo

type AccountInfo struct {
	StatsDate               string `json:"stats_date"`
	MailRM                  string `json:"mail_rm"`
	DefaultQuota            int64  `json:"default_quota"`
	UploadForbidden         string `json:"upload_forbidden"`
	PageLimit               int    `json:"page_limit"`
	ColdStorage             int64  `json:"cold_storage"`
	Status                  string `json:"status"`
	UseCDN                  string `json:"use_cdn"`
	AvailableColdStorage    int64  `json:"available_cold_storage"`
	DefaultPort             string `json:"default_port"`
	DefaultDomain           int    `json:"default_domain"`
	Email                   string `json:"email"`
	DownloadMenu            string `json:"download_menu"`
	FTPDID                  int    `json:"ftp_did"`
	DefaultPortFiles        string `json:"default_port_files"`
	FTPReport               string `json:"ftp_report"`
	OverQuota               int64  `json:"overquota"`
	AvailableStorage        int64  `json:"available_storage"`
	CDN                     string `json:"cdn"`
	Offer                   string `json:"offer"`
	SubscriptionEnd         string `json:"subscription_end"`
	TFA                     string `json:"2fa"`
	AllowedColdStorage      int64  `json:"allowed_cold_storage"`
	HotStorage              int64  `json:"hot_storage"`
	DefaultColdStorageQuota int64  `json:"default_cold_storage_quota"`
	FTPMode                 string `json:"ftp_mode"`
	RUReport                string `json:"ru_report"`
}

AccountInfo is the structure how 1Fichier returns user info

type CopyFileRequest

type CopyFileRequest struct {
	URLs     []string `json:"urls"`
	FolderID int      `json:"folder_id"`
	Rename   string   `json:"rename,omitempty"`
}

CopyFileRequest is the request structure of the corresponding request

type CopyFileResponse

type CopyFileResponse struct {
	Status  string     `json:"status"`
	Message string     `json:"message"`
	Copied  int        `json:"copied"`
	URLs    []FileCopy `json:"urls"`
}

CopyFileResponse is the response structure of the corresponding request

type DownloadRequest

type DownloadRequest struct {
	URL    string `json:"url"`
	Single int    `json:"single"`
	Pass   string `json:"pass,omitempty"`
	CDN    int    `json:"cdn,omitempty"`
}

DownloadRequest is the request structure of the corresponding request

type EndFileUploadResponse

type EndFileUploadResponse struct {
	Incoming int `json:"incoming"`
	Links    []struct {
		Download  string `json:"download"`
		Filename  string `json:"filename"`
		Remove    string `json:"remove"`
		Size      string `json:"size"`
		Whirlpool string `json:"whirlpool"`
	} `json:"links"`
}

EndFileUploadResponse is the response structure of the corresponding request

type File

type File struct {
	CDN         int    `json:"cdn"`
	Checksum    string `json:"checksum"`
	ContentType string `json:"content-type"`
	Date        string `json:"date"`
	Filename    string `json:"filename"`
	Pass        int    `json:"pass"`
	Size        int64  `json:"size"`
	URL         string `json:"url"`
}

File is the structure how 1Fichier returns a File

type FileCopy

type FileCopy struct {
	FromURL string `json:"from_url"`
	ToURL   string `json:"to_url"`
}

FileCopy is used in the CopyFileResponse

type FileInfoRequest

type FileInfoRequest struct {
	URL string `json:"url"`
}

FileInfoRequest is the request structure of the corresponding request

type FilesList

type FilesList struct {
	Items  []File `json:"items"`
	Status string `json:"Status"`
}

FilesList is the structure how 1Fichier returns a list of files

type Folder

type Folder struct {
	CreateDate string `json:"create_date"`
	ID         int    `json:"id"`
	Name       string `json:"name"`
	Pass       int    `json:"pass"`
}

Folder is the structure how 1Fichier returns a Folder

type FoldersList

type FoldersList struct {
	FolderID   int      `json:"folder_id"`
	Name       string   `json:"name"`
	Status     string   `json:"Status"`
	SubFolders []Folder `json:"sub_folders"`
}

FoldersList is the structure how 1Fichier returns a list of Folders

type Fs

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

Fs is the interface a cloud storage system must provide

func (*Fs) About

func (f *Fs) About(ctx context.Context) (usage *fs.Usage, err error)

About gets quota information

func (*Fs) Copy

func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object, error)

Copy src to this remote using server side move operations.

func (*Fs) CreateDir

func (f *Fs) CreateDir(ctx context.Context, pathID, leaf string) (newID string, err error)

CreateDir makes a directory with pathID as parent and name leaf

func (*Fs) DirMove

func (f *Fs) DirMove(ctx context.Context, src fs.Fs, srcRemote, dstRemote string) 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.

This is complicated by the fact that we can't use moveDir to move to a different directory AND rename at the same time as it can overwrite files in the source directory.

func (*Fs) Features

func (f *Fs) Features() *fs.Features

Features returns the optional features of this Fs

func (*Fs) FindLeaf

func (f *Fs) FindLeaf(ctx context.Context, pathID, leaf string) (pathIDOut string, found bool, err error)

FindLeaf finds a directory of name leaf in the folder with ID pathID

func (*Fs) Hashes

func (f *Fs) Hashes() hash.Set

Hashes returns the supported hash types of the filesystem

func (*Fs) List

func (f *Fs) List(ctx context.Context, dir string) (entries fs.DirEntries, err error)

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.

func (*Fs) Mkdir

func (f *Fs) Mkdir(ctx context.Context, dir string) error

Mkdir makes the directory (container, bucket)

Shouldn't return an error if it already exists

func (*Fs) Move

func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object, error)

Move src to this remote using server side move operations.

func (*Fs) Name

func (f *Fs) Name() string

Name of the remote (as passed into NewFs)

func (*Fs) NewObject

func (f *Fs) NewObject(ctx context.Context, remote string) (fs.Object, error)

NewObject finds the Object at remote. If it can't be found it returns the error ErrorObjectNotFound.

func (*Fs) Precision

func (f *Fs) Precision() time.Duration

Precision of the ModTimes in this Fs

func (f *Fs) PublicLink(ctx context.Context, remote string, expire fs.Duration, unlink bool) (string, error)

PublicLink adds a "readable by anyone with link" permission on the given file or folder.

func (*Fs) Put

func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (fs.Object, error)

Put in to the remote path with the modTime given of the given size

When called from outside an Fs by rclone, src.Size() will always be >= 0. But for unknown-sized objects (indicated by src.Size() == -1), Put should either return an error or upload it properly (rather than e.g. calling panic).

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

func (*Fs) PutUnchecked

func (f *Fs) PutUnchecked(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (fs.Object, error)

PutUnchecked uploads the object

This will create a duplicate if we upload a new file without checking to see if there is one already - use Put() for that.

func (*Fs) Rmdir

func (f *Fs) Rmdir(ctx context.Context, dir string) error

Rmdir removes the directory (container, bucket) if empty

Return an error if it doesn't exist or isn't empty

func (*Fs) Root

func (f *Fs) Root() string

Root of the remote (as passed into NewFs)

func (*Fs) String

func (f *Fs) String() string

String returns a description of the FS

type GenericOKResponse

type GenericOKResponse struct {
	Status  string `json:"status"`
	Message string `json:"message"`
}

GenericOKResponse is the response structure of the corresponding request

type GetTokenResponse

type GetTokenResponse struct {
	URL     string `json:"url"`
	Status  string `json:"Status"`
	Message string `json:"Message"`
}

GetTokenResponse is the response structure of the corresponding request

type GetUploadNodeResponse

type GetUploadNodeResponse struct {
	ID  string `json:"id"`
	URL string `json:"url"`
}

GetUploadNodeResponse is the response structure of the corresponding request

type ListFilesRequest

type ListFilesRequest struct {
	FolderID int `json:"folder_id"`
}

ListFilesRequest is the request structure of the corresponding request

type ListFolderRequest

type ListFolderRequest struct {
	FolderID int `json:"folder_id"`
}

ListFolderRequest is the request structure of the corresponding request

type MakeFolderRequest

type MakeFolderRequest struct {
	Name     string `json:"name"`
	FolderID int    `json:"folder_id"`
}

MakeFolderRequest is the request structure of the corresponding request

type MakeFolderResponse

type MakeFolderResponse struct {
	Name     string `json:"name"`
	FolderID int    `json:"folder_id"`
}

MakeFolderResponse is the response structure of the corresponding request

type MoveDirRequest

type MoveDirRequest struct {
	FolderID            int    `json:"folder_id"`
	DestinationFolderID int    `json:"destination_folder_id,omitempty"`
	DestinationUser     string `json:"destination_user"`
	Rename              string `json:"rename,omitempty"`
}

MoveDirRequest is the request structure of the corresponding request

type MoveDirResponse

type MoveDirResponse struct {
	Status  string `json:"status"`
	Message string `json:"message"`
	OldName string `json:"old_name"`
	NewName string `json:"new_name"`
}

MoveDirResponse is the response structure of the corresponding request

type MoveFileRequest

type MoveFileRequest struct {
	URLs     []string `json:"urls"`
	FolderID int      `json:"destination_folder_id"`
	Rename   string   `json:"rename,omitempty"`
}

MoveFileRequest is the request structure of the corresponding request

type MoveFileResponse

type MoveFileResponse struct {
	Status  string   `json:"status"`
	Message string   `json:"message"`
	URLs    []string `json:"urls"`
}

MoveFileResponse is the response structure of the corresponding request

type Object

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

Object is a filesystem like object provided by an Fs

func (*Object) Fs

func (o *Object) Fs() fs.Info

Fs returns read only access to the Fs that this object is part of

func (*Object) Hash

func (o *Object) Hash(ctx context.Context, t hash.Type) (string, error)

Hash returns the selected checksum of the file If no checksum is available it returns ""

func (*Object) ID

func (o *Object) ID() string

ID returns the ID of the Object if known, or "" if not

func (*Object) MimeType

func (o *Object) MimeType(ctx context.Context) string

MimeType of an Object if known, "" otherwise

func (*Object) ModTime

func (o *Object) ModTime(ctx context.Context) time.Time

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

func (*Object) Open

func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (io.ReadCloser, error)

Open opens the file for read. Call Close() on the returned io.ReadCloser

func (*Object) Remote

func (o *Object) Remote() string

Remote returns the remote path

func (*Object) Remove

func (o *Object) Remove(ctx context.Context) error

Remove removes this object

func (*Object) SetModTime

func (o *Object) SetModTime(context.Context, time.Time) error

SetModTime sets the metadata on the object to set the modification date

func (*Object) Size

func (o *Object) Size() int64

Size returns the size of the file

func (*Object) Storable

func (o *Object) Storable() bool

Storable says whether this object can be stored

func (*Object) String

func (o *Object) String() string

String returns a description of the Object

func (*Object) Update

func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) error

Update in to the object with the modTime given of the given size

When called from outside an Fs by rclone, src.Size() will always be >= 0. But for unknown-sized objects (indicated by src.Size() == -1), Upload should either return an error or update the object properly (rather than e.g. calling panic).

type Options

type Options struct {
	APIKey         string               `config:"api_key"`
	SharedFolder   string               `config:"shared_folder"`
	FilePassword   string               `config:"file_password"`
	FolderPassword string               `config:"folder_password"`
	CDN            bool                 `config:"cdn"`
	Enc            encoder.MultiEncoder `config:"encoding"`
}

Options defines the configuration for this backend

type RemoveFileRequest

type RemoveFileRequest struct {
	Files []RmFile `json:"files"`
}

RemoveFileRequest is the request structure of the corresponding request

type RemoveFolderRequest

type RemoveFolderRequest struct {
	FolderID int `json:"folder_id"`
}

RemoveFolderRequest is the request structure of the corresponding request

type RenameFileRequest

type RenameFileRequest struct {
	URLs   []RenameFileURL `json:"urls"`
	Pretty int             `json:"pretty"`
}

RenameFileRequest is the request structure of the corresponding request

type RenameFileResponse

type RenameFileResponse struct {
	Status  string `json:"status"`
	Message string `json:"message"`
	Renamed int    `json:"renamed"`
	URLs    []struct {
		URL         string `json:"url"`
		OldFilename string `json:"old_filename"`
		NewFilename string `json:"new_filename"`
	} `json:"urls"`
}

RenameFileResponse is the response structure of the corresponding request

type RenameFileURL

type RenameFileURL struct {
	URL      string `json:"url"`
	Filename string `json:"filename"`
}

RenameFileURL is the data structure to rename a single file

type RmFile

type RmFile struct {
	URL string `json:"url"`
}

RmFile is the request structure of the corresponding request

type SharedFile

type SharedFile struct {
	Filename string `json:"filename"`
	Link     string `json:"link"`
	Size     int64  `json:"size"`
}

SharedFile is the structure how 1Fichier returns a shared File

type SharedFolderResponse

type SharedFolderResponse []SharedFile

SharedFolderResponse is the response structure of the corresponding request

Jump to

Keyboard shortcuts

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