Make downloader plugin configurable

This commit is contained in:
sophia 2022-05-26 13:22:08 -05:00
parent 36081df049
commit 7282d43fae

View File

@ -13,9 +13,14 @@ type Downloader struct {
}
type DownloaderConfig struct {
src string
dest string
headers http.Header
Src string
Dest string
Headers http.Header
}
// Config implements Configurable
func (d *Downloader) Config() (interface{}, error) {
return &d.config, nil
}
func (d *Downloader) DownloadFunc() interface{} {
@ -23,23 +28,23 @@ func (d *Downloader) DownloadFunc() interface{} {
}
func (d *Downloader) Download() (err error) {
err = getter.Get(d.config.dest, d.config.src, getter.WithGetters(
httpGetter := &getter.HttpGetter{
Netrc: false,
HeadFirstTimeout: 10 * time.Second,
Header: d.config.Headers,
ReadTimeout: 30 * time.Second,
MaxBytes: 500000000, // 500 MB
}
err = getter.Get(d.config.Dest, d.config.Src, getter.WithGetters(
map[string]getter.Getter{
"http": &getter.HttpGetter{
Netrc: false,
HeadFirstTimeout: 10 * time.Second,
Header: d.config.headers,
ReadTimeout: 30 * time.Second,
MaxBytes: 500000000, // 500 MB
},
"file": &getter.FileGetter{
Copy: true,
},
"https": httpGetter,
"http": httpGetter,
},
))
return
}
var (
_ component.Downloader = (*Downloader)(nil)
_ component.Downloader = (*Downloader)(nil)
_ component.Configurable = (*Downloader)(nil)
)