// init initializes the downloader with default options. func (d *downloader) init() { d.totalBytes = -1 if d.opts.Concurrency == 0 { d.opts.Concurrency = DefaultDownloadConcurrency } if d.opts.PartSize == 0 { d.opts.PartSize = DefaultDownloadPartSize } if d.opts.S3 == nil { d.opts.S3 = s3.New(nil) } }
func putVersions(vs Versions) error { data, err := json.MarshalIndent(vs, "", " ") if err != nil { return err } S3 := s3.New(&aws.Config{ Region: aws.String(os.Getenv("AWS_DEFAULT_REGION")), }) _, err = S3.PutObject(&s3.PutObjectInput{ ACL: aws.String("public-read"), Body: bytes.NewReader(data), Bucket: aws.String("convox"), ContentLength: aws.Int64(int64(len(data))), Key: aws.String("release/versions.json"), }) return err }
// Walk a bucket to create initial versions.json file func importVersions() (Versions, error) { S3 := s3.New(&aws.Config{ Region: aws.String(os.Getenv("AWS_DEFAULT_REGION")), }) res, err := S3.ListObjects(&s3.ListObjectsInput{ Bucket: aws.String("convox"), Delimiter: aws.String("/"), Prefix: aws.String("release/"), }) if err != nil { return nil, err } vs := Versions{} for _, p := range res.CommonPrefixes { parts := strings.Split(*p.Prefix, "/") version := parts[1] if version == "latest" { continue } vs = append(vs, Version{ Version: version, Published: false, Required: false, }) } err = putVersions(vs) return vs, err }