download

package
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Oct 17, 2023 License: GPL-3.0 Imports: 28 Imported by: 3

Documentation

Index

Constants

View Source
const (
	EventKeyStart    = "start"
	EventKeyPause    = "pause"
	EventKeyProgress = "progress"
	EventKeyError    = "error"
	EventKeyDelete   = "delete"
	EventKeyDone     = "done"
	EventKeyFinally  = "finally"
)

Variables

View Source
var (
	ErrExtensionNoManifest = fmt.Errorf("manifest.json not found")
	ErrExtensionNotFound   = fmt.Errorf("extension not found")
)
View Source
var (
	ErrTaskNotFound = errors.New("task not found")
)

Functions

func Boot

func Boot() *boot

Types

type ActivationEvent added in v1.4.0

type ActivationEvent string
const (
	EventOnResolve ActivationEvent = "onResolve"
)

type BoltStorage

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

func NewBoltStorage

func NewBoltStorage(dir string) *BoltStorage

func (*BoltStorage) Clear

func (b *BoltStorage) Clear() error

func (*BoltStorage) Close

func (b *BoltStorage) Close() error

func (*BoltStorage) Delete

func (b *BoltStorage) Delete(bucket string, key string) error

func (*BoltStorage) Get

func (b *BoltStorage) Get(bucket string, key string, v any) (bool, error)

func (*BoltStorage) List

func (b *BoltStorage) List(bucket string, v any) error

func (*BoltStorage) Pop

func (b *BoltStorage) Pop(bucket string, key string, v any) error

func (*BoltStorage) Put

func (b *BoltStorage) Put(bucket string, key string, v any) error

func (*BoltStorage) Setup

func (b *BoltStorage) Setup(buckets []string) error

type Context added in v1.4.0

type Context struct {
	Req      *base.Request  `json:"req"`
	Res      *base.Resource `json:"res"`
	Settings map[string]any `json:"settings"`
}

type Downloader

type Downloader struct {
	Logger          *logger.Logger
	ExtensionLogger *logger.Logger
	// contains filtered or unexported fields
}

func NewDownloader

func NewDownloader(cfg *DownloaderConfig) *Downloader

func (*Downloader) Clear

func (d *Downloader) Clear() error

func (*Downloader) Close

func (d *Downloader) Close() error

func (*Downloader) Continue

func (d *Downloader) Continue(id string) (err error)

func (*Downloader) ContinueAll added in v1.3.2

func (d *Downloader) ContinueAll() (err error)

func (*Downloader) Create

func (d *Downloader) Create(rrId string, opts *base.Options) (taskId string, err error)

func (*Downloader) CreateDirect added in v1.3.1

func (d *Downloader) CreateDirect(req *base.Request, opts *base.Options) (taskId string, err error)

func (*Downloader) Delete

func (d *Downloader) Delete(id string, force bool) (err error)

func (*Downloader) DeleteExtension added in v1.4.0

func (d *Downloader) DeleteExtension(identity string) error

func (*Downloader) ExtensionPath added in v1.4.0

func (d *Downloader) ExtensionPath(ext *Extension) string

func (*Downloader) GetConfig

func (d *Downloader) GetConfig() (*DownloaderStoreConfig, error)

func (*Downloader) GetExtension added in v1.4.0

func (d *Downloader) GetExtension(identity string) (*Extension, error)

func (*Downloader) GetExtensions added in v1.4.0

func (d *Downloader) GetExtensions() []*Extension

func (*Downloader) GetTask

func (d *Downloader) GetTask(id string) *Task

func (*Downloader) GetTasks

func (d *Downloader) GetTasks() []*Task

func (*Downloader) InstallExtensionByFolder added in v1.4.0

func (d *Downloader) InstallExtensionByFolder(path string, devMode bool) (*Extension, error)

func (*Downloader) InstallExtensionByGit added in v1.4.0

func (d *Downloader) InstallExtensionByGit(url string) (*Extension, error)

func (*Downloader) Listener

func (d *Downloader) Listener(fn Listener)

func (*Downloader) Pause

func (d *Downloader) Pause(id string) (err error)

func (*Downloader) PauseAll added in v1.3.2

func (d *Downloader) PauseAll() (err error)

func (*Downloader) PutConfig

func (d *Downloader) PutConfig(v *DownloaderStoreConfig) error

func (*Downloader) Resolve

func (d *Downloader) Resolve(req *base.Request) (rr *ResolveResult, err error)

func (*Downloader) Setup

func (d *Downloader) Setup() error

func (*Downloader) SwitchExtension added in v1.4.0

func (d *Downloader) SwitchExtension(identity string, status bool) error

func (*Downloader) UpdateExtensionSettings added in v1.4.0

func (d *Downloader) UpdateExtensionSettings(identity string, settings map[string]any) error

func (*Downloader) UpgradeCheckExtension added in v1.4.0

func (d *Downloader) UpgradeCheckExtension(identity string) (newVersion string, err error)

UpgradeCheckExtension Check if there is a new version for the extension.

func (*Downloader) UpgradeExtension added in v1.4.0

func (d *Downloader) UpgradeExtension(identity string) error

type DownloaderConfig

type DownloaderConfig struct {
	Controller    *controller.Controller
	FetchBuilders []fetcher.FetcherBuilder

	RefreshInterval int `json:"refreshInterval"` // RefreshInterval time duration to refresh task progress(ms)
	Storage         Storage
	StorageDir      string

	ProductionMode bool

	*DownloaderStoreConfig
}

func (*DownloaderConfig) Init

func (cfg *DownloaderConfig) Init() *DownloaderConfig

type DownloaderStoreConfig

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"`          // Extra is the extra config
}

DownloaderStoreConfig is the config that can restore the downloader.

func (*DownloaderStoreConfig) Init added in v1.3.1

type Event

type Event struct {
	Key  EventKey
	Task *Task
	Err  error
}

type EventKey

type EventKey string

type Extension added in v1.4.0

type Extension struct {
	// Identity is global unique for an extension, it's a combination of author and name
	Identity    string `json:"identity"`
	Name        string `json:"name"`
	Author      string `json:"author"`
	Title       string `json:"title"`
	Description string `json:"description"`
	Icon        string `json:"icon"`
	// Version semantic version string, like: 1.0.0
	Version string `json:"version"`
	// Homepage homepage url
	Homepage string `json:"homepage"`
	// Repository git repository info
	Repository *Repository `json:"repository"`
	Scripts    []*Script   `json:"scripts"`
	Settings   []*Setting  `json:"settings"`
	// Disabled if true, this extension will be ignored
	Disabled bool `json:"disabled"`

	DevMode bool `json:"devMode"`
	// DevPath is the local path of extension source code
	DevPath string `json:"devPath"`

	CreatedAt time.Time `json:"createdAt"`
	UpdatedAt time.Time `json:"updatedAt"`
}

type Instance added in v1.4.0

type Instance struct {
	Events InstanceEvents  `json:"events"`
	Logger *InstanceLogger `json:"logger"`
}

Instance inject to js context

type InstanceEvents added in v1.4.0

type InstanceEvents map[ActivationEvent]goja.Callable

func (InstanceEvents) OnResolve added in v1.4.0

func (h InstanceEvents) OnResolve(fn goja.Callable)

type InstanceLogger added in v1.4.0

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

func (*InstanceLogger) Debug added in v1.4.0

func (l *InstanceLogger) Debug(msg ...any)

func (*InstanceLogger) Error added in v1.4.0

func (l *InstanceLogger) Error(msg ...any)

func (*InstanceLogger) Info added in v1.4.0

func (l *InstanceLogger) Info(msg ...any)

func (*InstanceLogger) Warn added in v1.4.0

func (l *InstanceLogger) Warn(msg ...any)

type Listener

type Listener func(event *Event)

type MemStorage

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

func NewMemStorage

func NewMemStorage() *MemStorage

func (*MemStorage) Clear

func (n *MemStorage) Clear() error

func (*MemStorage) Close

func (n *MemStorage) Close() error

func (*MemStorage) Delete

func (n *MemStorage) Delete(bucket string, key string) error

func (*MemStorage) Get

func (n *MemStorage) Get(bucket string, key string, v any) (bool, error)

func (*MemStorage) List

func (n *MemStorage) List(bucket string, v any) error

func (*MemStorage) Pop

func (n *MemStorage) Pop(bucket string, key string, v any) error

func (*MemStorage) Put

func (n *MemStorage) Put(bucket string, key string, v any) error

func (*MemStorage) Setup

func (n *MemStorage) Setup(buckets []string) error

type Option added in v1.4.0

type Option struct {
	Label string `json:"label"`
	Value any    `json:"value"`
}

type Progress

type Progress struct {
	// 下载耗时(纳秒)
	Used int64 `json:"used"`
	// 每秒下载字节数
	Speed int64 `json:"speed"`
	// 已下载的字节数
	Downloaded int64 `json:"downloaded"`
}

type Repository added in v1.4.0

type Repository struct {
	Url       string `json:"url"`
	Directory string `json:"directory"`
}

type ResolveResult

type ResolveResult struct {
	ID  string         `json:"id"`
	Res *base.Resource `json:"res"`
}

type Script added in v1.4.0

type Script struct {
	// Event active event name
	Event string `json:"event"`
	// Matches match request url pattern list
	Matches []string `json:"matches"`
	// Entry js script file path
	Entry string `json:"entry"`
}

type Setting added in v1.4.0

type Setting struct {
	Name        string `json:"name"`
	Title       string `json:"title"`
	Description string `json:"description"`
	Required    bool   `json:"required"`
	// setting type
	Type SettingType `json:"type"`
	// setting value
	Value any `json:"value"`
	//Multiple bool      `json:"multiple"`
	Options []*Option `json:"options"`
}

type SettingType added in v1.4.0

type SettingType string
const (
	SettingTypeString  SettingType = "string"
	SettingTypeNumber  SettingType = "number"
	SettingTypeBoolean SettingType = "boolean"
)

type Storage

type Storage interface {
	Setup(buckets []string) error
	Put(bucket string, key string, v any) error
	Get(bucket string, key string, v any) (bool, error)
	List(bucket string, v any) error
	Pop(bucket string, key string, v any) error
	Delete(bucket string, key string) error

	Close() error
	Clear() error
}

type Task

type Task struct {
	ID        string               `json:"id"`
	Meta      *fetcher.FetcherMeta `json:"meta"`
	Status    base.Status          `json:"status"`
	Progress  *Progress            `json:"progress"`
	Size      int64                `json:"size"`
	CreatedAt time.Time            `json:"createdAt"`
	// contains filtered or unexported fields
}

func NewTask

func NewTask() *Task

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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