From ae258d324d07e96ed1f2fbc94220c4193ae28f00 Mon Sep 17 00:00:00 2001 From: Jon Durbin Date: Tue, 7 Mar 2023 11:13:41 -0500 Subject: [PATCH] Optionally specify alternative credentials when generating signed URLs. --- guillotina_gcloudstorage/storage.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/guillotina_gcloudstorage/storage.py b/guillotina_gcloudstorage/storage.py index 24803a3..14b966e 100644 --- a/guillotina_gcloudstorage/storage.py +++ b/guillotina_gcloudstorage/storage.py @@ -591,10 +591,17 @@ async def iterate_bucket_page(self, page_token=None, prefix=None): data = await resp.json() return data - async def generate_download_signed_url(self, key, expiration=timedelta(minutes=30)): + async def generate_download_signed_url( + self, key, expiration=timedelta(minutes=30), credentials=None + ): client = self.get_client() bucket = google.cloud.storage.Bucket(client, name=await self.get_bucket_name()) blob = bucket.blob(key) - return blob.generate_signed_url( - version="v4", expiration=expiration, method="GET" - ) + request_args = { + "version": "v4", + "expiration": expiration, + "method": "GET", + } + if credentials: + request_args["credentials"] = credentials + return blob.generate_signed_url(**request_args)