base

package
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Sep 21, 2024 License: GPL-3.0 Imports: 7 Imported by: 3

Documentation

Index

Constants

View Source
const (
	HttpCodeOK             = 200
	HttpCodePartialContent = 206

	HttpHeaderRange              = "Range"
	HttpHeaderAcceptRanges       = "Accept-Ranges"
	HttpHeaderContentLength      = "Content-Length"
	HttpHeaderContentRange       = "Content-Range"
	HttpHeaderContentDisposition = "Content-Disposition"
	HttpHeaderUserAgent          = "User-Agent"
	HttpHeaderLastModified       = "Last-Modified"

	HttpHeaderBytes       = "bytes"
	HttpHeaderRangeFormat = "bytes=%d-%d"
)

Variables

View Source
var InDocker string
View Source
var Version string

Version is the build version, set at build time, using `go build -ldflags "-X github.com/GopeedLab/gopeed/pkg/base.Version=1.0.0"`.

Functions

func ParseOptsExtra

func ParseOptsExtra[E any](opts *Options) error

func ParseReqExtra

func ParseReqExtra[E any](req *Request) error

Types

type DownloaderProxyConfig added in v1.5.7

type DownloaderProxyConfig struct {
	Enable bool `json:"enable"`
	// System is the flag that use system proxy
	System bool   `json:"system"`
	Scheme string `json:"scheme"`
	Host   string `json:"host"`
	Usr    string `json:"usr"`
	Pwd    string `json:"pwd"`
}

func (*DownloaderProxyConfig) ToHandler added in v1.5.7

func (cfg *DownloaderProxyConfig) ToHandler() func(r *http.Request) (*url.URL, error)

func (*DownloaderProxyConfig) ToUrl added in v1.5.7

func (cfg *DownloaderProxyConfig) ToUrl() *url.URL

ToUrl returns the proxy url, just for git clone

type DownloaderStoreConfig added in v1.5.7

type DownloaderStoreConfig struct {
	FirstLoad bool `json:"-"` // FirstLoad is the flag that the config is first time init and not from store

	DownloadDir    string                 `json:"downloadDir"`    // DownloadDir is the default directory to save the downloaded files
	MaxRunning     int                    `json:"maxRunning"`     // MaxRunning is the max running download count
	ProtocolConfig map[string]any         `json:"protocolConfig"` // ProtocolConfig is special config for each protocol
	Extra          map[string]any         `json:"extra"`
	Proxy          *DownloaderProxyConfig `json:"proxy"`
}

DownloaderStoreConfig is the config that can restore the downloader.

func (*DownloaderStoreConfig) Init added in v1.5.7

func (*DownloaderStoreConfig) Merge added in v1.5.8

type FileInfo

type FileInfo struct {
	Name  string     `json:"name"`
	Path  string     `json:"path"`
	Size  int64      `json:"size"`
	Ctime *time.Time `json:"ctime"`

	Req *Request `json:"req"`
}

type Options

type Options struct {
	// Download file name
	Name string `json:"name"`
	// Download file path
	Path string `json:"path"`
	// Select file indexes to download
	SelectFiles []int `json:"selectFiles"`
	// Extra info for specific fetcher
	Extra any `json:"extra"`
}

Options for download

func (*Options) Clone added in v1.4.0

func (o *Options) Clone() *Options

func (*Options) InitSelectFiles added in v1.4.0

func (o *Options) InitSelectFiles(fileSize int)

type Request

type Request struct {
	URL   string `json:"url"`
	Extra any    `json:"extra"`
	// Labels is used to mark the download task
	Labels map[string]string `json:"labels"`
	// Proxy is special proxy config for request
	Proxy *RequestProxy `json:"proxy"`
}

Request download request

func (*Request) Validate added in v1.4.2

func (r *Request) Validate() error

type RequestProxy added in v1.5.9

type RequestProxy struct {
	Mode   RequestProxyMode `json:"mode"`
	Scheme string           `json:"scheme"`
	Host   string           `json:"host"`
	Usr    string           `json:"usr"`
	Pwd    string           `json:"pwd"`
}

func (*RequestProxy) ToHandler added in v1.5.9

func (p *RequestProxy) ToHandler() func(r *http.Request) (*url.URL, error)

type RequestProxyMode added in v1.5.9

type RequestProxyMode string
const (
	// RequestProxyModeFollow follow setting proxy
	RequestProxyModeFollow RequestProxyMode = "follow"
	// RequestProxyModeNone not use proxy
	RequestProxyModeNone RequestProxyMode = "none"
	// RequestProxyModeCustom custom proxy
	RequestProxyModeCustom RequestProxyMode = "custom"
)

type Resource

type Resource struct {
	// if name is not empty, the resource is a folder and the name is the folder name
	Name string `json:"name"`
	Size int64  `json:"size"`
	// is support range download
	Range bool `json:"range"`
	// file list
	Files []*FileInfo `json:"files"`
	Hash  string      `json:"hash"`
}

Resource download resource

func (*Resource) CalcSize added in v1.4.0

func (r *Resource) CalcSize(selectFiles []int)

func (*Resource) Validate added in v1.4.0

func (r *Resource) Validate() error

type Status

type Status string
const (
	DownloadStatusReady   Status = "ready" // task create but not start
	DownloadStatusRunning Status = "running"
	DownloadStatusPause   Status = "pause"
	DownloadStatusWait    Status = "wait" // task is wait for running
	DownloadStatusError   Status = "error"
	DownloadStatusDone    Status = "done"
)

Jump to

Keyboard shortcuts

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