]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/hashicorp/go-getter/get_s3.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / go-getter / get_s3.go
index ebb3217417d2d454364ed2ef85d9070e1cb3c5fa..93eeb0b817f6497d57b4bab097df88a500316b52 100644 (file)
@@ -1,8 +1,8 @@
 package getter
 
 import (
+       "context"
        "fmt"
-       "io"
        "net/url"
        "os"
        "path/filepath"
@@ -18,7 +18,9 @@ import (
 
 // S3Getter is a Getter implementation that will download a module from
 // a S3 bucket.
-type S3Getter struct{}
+type S3Getter struct {
+       getter
+}
 
 func (g *S3Getter) ClientMode(u *url.URL) (ClientMode, error) {
        // Parse URL
@@ -60,6 +62,8 @@ func (g *S3Getter) ClientMode(u *url.URL) (ClientMode, error) {
 }
 
 func (g *S3Getter) Get(dst string, u *url.URL) error {
+       ctx := g.Context()
+
        // Parse URL
        region, bucket, path, _, creds, err := g.parseUrl(u)
        if err != nil {
@@ -124,7 +128,7 @@ func (g *S3Getter) Get(dst string, u *url.URL) error {
                        }
                        objDst = filepath.Join(dst, objDst)
 
-                       if err := g.getObject(client, objDst, bucket, objPath, ""); err != nil {
+                       if err := g.getObject(ctx, client, objDst, bucket, objPath, ""); err != nil {
                                return err
                        }
                }
@@ -134,6 +138,7 @@ func (g *S3Getter) Get(dst string, u *url.URL) error {
 }
 
 func (g *S3Getter) GetFile(dst string, u *url.URL) error {
+       ctx := g.Context()
        region, bucket, path, version, creds, err := g.parseUrl(u)
        if err != nil {
                return err
@@ -142,10 +147,10 @@ func (g *S3Getter) GetFile(dst string, u *url.URL) error {
        config := g.getAWSConfig(region, u, creds)
        sess := session.New(config)
        client := s3.New(sess)
-       return g.getObject(client, dst, bucket, path, version)
+       return g.getObject(ctx, client, dst, bucket, path, version)
 }
 
-func (g *S3Getter) getObject(client *s3.S3, dst, bucket, key, version string) error {
+func (g *S3Getter) getObject(ctx context.Context, client *s3.S3, dst, bucket, key, version string) error {
        req := &s3.GetObjectInput{
                Bucket: aws.String(bucket),
                Key:    aws.String(key),
@@ -170,7 +175,7 @@ func (g *S3Getter) getObject(client *s3.S3, dst, bucket, key, version string) er
        }
        defer f.Close()
 
-       _, err = io.Copy(f, resp.Body)
+       _, err = Copy(ctx, f, resp.Body)
        return err
 }