uploader

package
v0.0.0-...-87e9d67 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2023 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

Package uploader contains uploading files helpers.

Index

Constants

View Source
const (

	// MaximumPartSize is maximum size of single part.
	MaximumPartSize = constant.UploadMaxPartSize
)

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

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

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 of upload.
	ID int64
	// Name of uploading file.
	Name string
	// Part is an ID of uploaded part.
	Part int
	// PartSize is a size of uploaded part.
	PartSize int
	// Uploaded is a total sum of uploaded bytes.
	Uploaded int64
	// Total is a total size of uploading file.
	// May be equal to -1, in case when Upload created without size (stream upload).
	Total int64
}

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

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

FromBytes uploads file from given byte slice.

func (*Uploader) FromFS

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

FromFS uploads file from fs using given path.

func (*Uploader) FromFile

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

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

FromPath uploads file from given path.

func (*Uploader) FromReader

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

func (u *Uploader) FromSource(ctx context.Context, src source.Source, rawURL string) (_ tg.InputFileClass, rerr error)

FromSource uses given source and URL to fetch data and upload it to Telegram.

func (*Uploader) FromURL

func (u *Uploader) FromURL(ctx context.Context, rawURL string) (_ tg.InputFileClass, rerr error)

FromURL uses given source to upload to Telegram.

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

func (u *Uploader) WithSource(src source.Source) *Uploader

WithSource sets URL resolver to use.

func (*Uploader) WithThreads

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

WithThreads sets uploading goroutines limit per upload.

Directories

Path Synopsis
Package source contains remote source interface and implementations for uploader.
Package source contains remote source interface and implementations for uploader.

Jump to

Keyboard shortcuts

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