aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/gcs/gcs.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gcs/gcs.go')
-rw-r--r--pkg/gcs/gcs.go22
1 files changed, 16 insertions, 6 deletions
diff --git a/pkg/gcs/gcs.go b/pkg/gcs/gcs.go
index 0121d2aeb..97883256a 100644
--- a/pkg/gcs/gcs.go
+++ b/pkg/gcs/gcs.go
@@ -80,25 +80,35 @@ func (client *Client) Read(gcsFile string) (*File, error) {
}
func (client *Client) UploadFile(localFile, gcsFile string) error {
- bucket, filename, err := split(gcsFile)
+ local, err := os.Open(localFile)
if err != nil {
return err
}
- local, err := os.Open(localFile)
+ defer local.Close()
+
+ w, err := client.FileWriter(gcsFile)
if err != nil {
return err
}
- defer local.Close()
- bkt := client.client.Bucket(bucket)
- f := bkt.Object(filename)
- w := f.NewWriter(client.ctx)
defer w.Close()
+
if _, err := io.Copy(w, local); err != nil {
return err
}
return nil
}
+func (client *Client) FileWriter(gcsFile string) (io.WriteCloser, error) {
+ bucket, filename, err := split(gcsFile)
+ if err != nil {
+ return nil, err
+ }
+ bkt := client.client.Bucket(bucket)
+ f := bkt.Object(filename)
+ w := f.NewWriter(client.ctx)
+ return w, nil
+}
+
func split(file string) (bucket, filename string, err error) {
pos := strings.IndexByte(file, '/')
if pos == -1 {