tus_client

package module
v0.4.1 Latest Latest
Warning

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

Go to latest
Published: Apr 14, 2024 License: MulanPSL-2.0 Imports: 16 Imported by: 1

README

说明

Tus v1.0.0协议客户端实现,参考自:tus resumable upload protocol

使用

go get gitee.com/ivfzhou/tus_client@latest
client := tus_client.NewClient("host")

// 并行分片上传
fileId, err := client.MultipleUploadFromFile(ctx, "your_file_path")

// 下载
err := client.DownloadToFile(ctx, "fileId", "to_file_path")

联系

电邮:ivfzhou@126.com

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DeleteRequest

type DeleteRequest struct {
	// TusResumable 客户端使用Tus协议版本,默认1.0.0
	TusResumable string
	// Location 文件标识
	Location string
}

type DeleteResult

type DeleteResult struct {
	// HTTPStatus 响应码
	HTTPStatus int
	// TusResumable 服务器运行的Tus协议版本
	TusResumable string
}

type GetRequest

type GetRequest struct {
	// TusResumable 客户端使用Tus协议版本,默认1.0.0
	TusResumable string
	// Location 文件标识
	Location string
}

type GetResult

type GetResult struct {
	// HTTPStatus 响应码
	HTTPStatus int
	// TusResumable 服务器运行的Tus协议版本
	TusResumable string
	// Body 文件数据IO流
	Body io.ReadCloser
	// ContentLength 文件大小
	ContentLength int
}

type HeadRequest

type HeadRequest struct {
	// TusResumable 客户端使用Tus协议版本,默认1.0.0
	TusResumable string
	// Location 文件标识
	Location string
}

type HeadResult

type HeadResult struct {
	// HTTPStatus 响应码
	HTTPStatus int
	// TusResumable 服务器运行的Tus协议版本
	TusResumable string
	// UploadOffset 文件大小偏移量
	UploadOffset int
	// UploadLength 文件大小
	UploadLength int
	// UploadMetadata 文件元信息
	UploadMetadata map[string]string
	// UploadDeferLength 文件大小在完成上传后确定
	UploadDeferLength bool
	// UploadConcat 文件的分片信息
	UploadConcat []string
}

type Logger added in v0.4.0

type Logger interface {
	Error(ctx context.Context, msg string)
	Info(ctx context.Context, msg string)
	Warn(ctx context.Context, msg string)
	Debug(ctx context.Context, msg string)
}

type Option

type Option func(*Options)

func WithChunkSize

func WithChunkSize(chunkSize int) Option

func WithHTTPClient

func WithHTTPClient(c *http.Client) Option

func WithLogger added in v0.4.0

func WithLogger(logger Logger) Option

func WithSchema

func WithSchema(schema string) Option

type Options

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

type OptionsResult

type OptionsResult struct {
	// HTTPStatus 响应码
	HTTPStatus int
	// TusExtension 服务器支持的扩展
	TusExtension []string
	// TusResumable 服务器运行的Tus协议版本
	TusResumable string
	// TusVersion 服务器支持的协议版本
	TusVersion []string
	// TusMaxSize 服务器允许的单次最大文件上传大小
	TusMaxSize int
	// TusChecksumAlgorithm 服务器支持的文件校验和算法
	TusChecksumAlgorithm []string
}

type PatchByIORequest added in v0.3.0

type PatchByIORequest struct {
	// Location 文件标识
	Location string
	// TusResumable 客户端使用Tus协议版本,默认1.0.0
	TusResumable string
	// UploadOffset 文件大小偏移量
	UploadOffset int
	// Body 文件数据
	Body io.ReadCloser
	// BodySize 大小
	BodySize int
	// UploadChecksum 数据校验和
	UploadChecksum string
	// UploadChecksumAlgorithm 校验和算法
	UploadChecksumAlgorithm string
}

type PatchRequest

type PatchRequest struct {
	// Location 文件标识
	Location string
	// TusResumable 客户端使用Tus协议版本,默认1.0.0
	TusResumable string
	// UploadOffset 文件大小偏移量
	UploadOffset int
	// Body 文件数据
	Body []byte
	// UploadChecksum 数据校验和
	UploadChecksum string
	// UploadChecksumAlgorithm 校验和算法
	UploadChecksumAlgorithm string
}

type PatchResult

type PatchResult struct {
	// HTTPStatus 响应码
	HTTPStatus int
	// TusResumable 服务器运行的Tus协议版本
	TusResumable string
	// UploadOffset 文件大小偏移量
	UploadOffset int
	// UploadExpires 文件过期时间
	UploadExpires time.Time
}

type PostRequest

type PostRequest struct {
	// TusResumable 客户端使用Tus协议版本,默认1.0.0
	TusResumable string
	// UploadMetadata 文件元信息
	UploadMetadata map[string]string
	// UploadLength 文件上传大小
	UploadLength int
	// UploadDeferLength 文件大小在完成上传后确定
	UploadDeferLength bool
	// Body 文件数据
	Body []byte
	// UploadConcat 分片上传
	UploadConcat string
}

type PostResult

type PostResult struct {
	// HTTPStatus 响应码
	HTTPStatus int
	// TusResumable 服务器运行的Tus协议版本
	TusResumable string
	// Location 文件标识
	Location string
	// UploadOffset 文件大小偏移量
	UploadOffset int
}

type TusClient

type TusClient interface {
	// Options 发送HTTP OPTIONS请求
	Options(context.Context) (*OptionsResult, error)

	// Post 发送HTTP POST请求
	Post(context.Context, *PostRequest) (*PostResult, error)

	// Head 发送HTTP HEAD请求
	Head(context.Context, *HeadRequest) (*HeadResult, error)

	// Patch 发送HTTP PATCH请求
	Patch(context.Context, *PatchRequest) (*PatchResult, error)

	// Delete 发送HTTP DELETE请求
	Delete(context.Context, *DeleteRequest) (*DeleteResult, error)

	// Get 发送HTTP GET请求
	Get(context.Context, *GetRequest) (*GetResult, error)

	// MultipleUploadFromFile 读取文件并发上传到服务器,返回文件在服务器标识
	MultipleUploadFromFile(ctx context.Context, filePath string) (location string, err error)

	// MultipleUploadFromReader 读取IO流直到EOF,并发上传到服务器,返回文件在服务器标识
	MultipleUploadFromReader(ctx context.Context, r io.Reader) (location string, err error)

	// DownloadToFile 从服务器下载文件到本地
	DownloadToFile(ctx context.Context, location, dest string) error

	// DownloadToWriter 从服务器下载文件到指定的IO流中
	DownloadToWriter(ctx context.Context, location string, w io.Writer) error

	// UploadPart 上传分片
	UploadPart(ctx context.Context, data []byte) (location string, err error)

	// MergeParts 合并分片,切片顺序决定顺序合并顺序
	MergeParts(ctx context.Context, parts []string) (location string, err error)

	// DiscardParts 丢弃上传的分片
	DiscardParts(ctx context.Context, parts []string) error

	// UploadPartByIO 上传分片
	UploadPartByIO(ctx context.Context, data io.ReadCloser, length int) (location string, err error)

	// PatchByIO 发送HTTP PATCH请求
	PatchByIO(ctx context.Context, pr *PatchByIORequest) (*PatchResult, error)
}

func NewClient

func NewClient(host string, opts ...Option) TusClient

Jump to

Keyboard shortcuts

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