uploader

package
v0.26.0 Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2021 License: MIT Imports: 18 Imported by: 28

Documentation

Overview

Package uploader contains uploading files helpers.

Index

Constants

View Source
const (

	// `524288 % part_size = 0` (512KB must be evenly divisible by part_size)
	MaximumPartSize = 524288
)

https://core.telegram.org/api/files#uploading-files

Variables

This section is empty.

Functions

This section is empty.

Types

type Client added in v0.24.0

type Client interface {
	UploadSaveFilePart(ctx context.Context, request *tg.UploadSaveFilePartRequest) (bool, error)
	UploadSaveBigFilePart(ctx context.Context, request *tg.UploadSaveBigFilePartRequest) (bool, error)
}

Client represents Telegram RPC client.

type File

type File interface {
	Stat() (os.FileInfo, error)
	io.Reader
}

File is file abstraction.

type Progress

type Progress interface {
	Chunk(ctx context.Context, state ProgressState) error
}

Progress is interface of upload process tracker.

type ProgressState

type ProgressState struct {
	ID       int64
	Name     string
	Part     int
	PartSize int
	Uploaded int
	Total    int
}

ProgressState represents upload state change.

type Upload

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

Upload represents Telegram file upload.

func NewUpload

func NewUpload(name string, from io.Reader, total int64) *Upload

NewUpload creates new Upload struct using given name and reader.

type Uploader

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

Uploader is Telegram file uploader.

func NewUploader

func NewUploader(rpc Client) *Uploader

NewUploader creates new Uploader.

func (*Uploader) FromBytes added in v0.26.0

func (u *Uploader) FromBytes(ctx context.Context, name string, b []byte) (tg.InputFileClass, error)

FromBytes uploads file from given byte slice.

func (*Uploader) FromFS added in v0.26.0

func (u *Uploader) FromFS(ctx context.Context, filesystem fs.FS, path string) (tg.InputFileClass, error)

FromFS uploads file from fs using given path.

func (*Uploader) FromFile added in v0.23.0

func (u *Uploader) FromFile(ctx context.Context, f File) (tg.InputFileClass, error)

FromFile uploads given File. NB: FromFile does not close given file.

func (*Uploader) FromPath added in v0.23.0

func (u *Uploader) FromPath(ctx context.Context, path string) (tg.InputFileClass, error)

FromPath uploads file from given path.

func (*Uploader) FromReader added in v0.24.0

func (u *Uploader) FromReader(ctx context.Context, name string, f io.Reader) (tg.InputFileClass, error)

FromReader uploads file from given io.Reader. NB: totally stream should not exceed the limit for small files (10 MB as docs says, may be a bit bigger).

func (*Uploader) Upload

func (u *Uploader) Upload(ctx context.Context, upload *Upload) (tg.InputFileClass, error)

Upload uploads data from Upload object.

func (*Uploader) WithIDGenerator

func (u *Uploader) WithIDGenerator(cb func() (int64, error)) *Uploader

WithIDGenerator sets id generator.

func (*Uploader) WithPartSize

func (u *Uploader) WithPartSize(partSize int) *Uploader

WithPartSize sets part size. Should be divisible by 1024. 524288 should be divisible by partSize.

See https://core.telegram.org/api/files#uploading-files.

func (*Uploader) WithProgress

func (u *Uploader) WithProgress(progress Progress) *Uploader

WithProgress sets progress callback.

func (*Uploader) WithThreads

func (u *Uploader) WithThreads(limit int) *Uploader

WithThreads sets uploading goroutines limit per upload.

Jump to

Keyboard shortcuts

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