in internal/google/gcs.go [83:117]
func UploadObject(
bucketName string,
objectPath string,
localPath string,
) error {
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
return fmt.Errorf("failed to create storage client: %w", err)
}
defer client.Close()
// Open local file
f, err := os.Open(localPath)
if err != nil {
return fmt.Errorf("os.Open: %w", err)
}
defer f.Close()
ctx, cancel := context.WithTimeout(ctx, time.Second*50)
defer cancel()
o := client.Bucket(bucketName).Object(objectPath)
wc := o.NewWriter(ctx)
if _, err = io.Copy(wc, f); err != nil {
return fmt.Errorf("io.Copy: %w", err)
}
if err := wc.Close(); err != nil {
return fmt.Errorf("Writer.Close: %w", err)
}
return nil
}