From c9745cd47ef828cb475c7cd94b5950744d4afbd6 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 25 Nov 2018 18:51:48 +0100 Subject: [PATCH] gs: Respect bandwidth limiting In 0dfdc11ed909f3ec8f8c0f0fdcbc342ed4602608, accidentally we dropped using the provided http.RoundTripper, this commits adds it back. Closes #1989 --- internal/backend/gs/gs.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/internal/backend/gs/gs.go b/internal/backend/gs/gs.go index c68efe01d..feea05d07 100644 --- a/internal/backend/gs/gs.go +++ b/internal/backend/gs/gs.go @@ -15,6 +15,7 @@ import ( "github.com/restic/restic/internal/debug" "github.com/restic/restic/internal/restic" + "golang.org/x/oauth2" "golang.org/x/oauth2/google" "google.golang.org/api/googleapi" storage "google.golang.org/api/storage/v1" @@ -40,8 +41,17 @@ type Backend struct { // Ensure that *Backend implements restic.Backend. var _ restic.Backend = &Backend{} -func getStorageService() (*storage.Service, error) { - client, err := google.DefaultClient(context.TODO(), storage.DevstorageReadWriteScope) +func getStorageService(rt http.RoundTripper) (*storage.Service, error) { + // create a new HTTP client + httpClient := &http.Client{ + Transport: rt, + } + + // create a now context with the HTTP client stored at the oauth2.HTTPClient key + ctx := context.WithValue(context.Background(), oauth2.HTTPClient, httpClient) + + // use this context + client, err := google.DefaultClient(ctx, storage.DevstorageReadWriteScope) if err != nil { return nil, err } @@ -59,7 +69,7 @@ const defaultListMaxItems = 1000 func open(cfg Config, rt http.RoundTripper) (*Backend, error) { debug.Log("open, config %#v", cfg) - service, err := getStorageService() + service, err := getStorageService(rt) if err != nil { return nil, errors.Wrap(err, "getStorageService") }