def generate_download_signed_url_v4()

in movie_search/final_ver/backend/utils.py [0:0]


def generate_download_signed_url_v4(bucket_name: str, blob_name: str) -> str:
    """Cloud Storage の Blob の v4 signed URL を生成する

    Args:
        bucket_name: バケット名
        blob_name: Blob 名

    Returns:
        署名付きURL
    """
    # TODO: Find a way to refresh credencials with ADC and impersonate service account
    if running_on_cloudrun() and not credentials.valid:
        credentials.refresh(auth.transport.requests.Request())

    storage_client = storage.Client(project=project_id, credentials=credentials)
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(blob_name)

    url = blob.generate_signed_url(
        version="v4",
        expiration=datetime.timedelta(minutes=15),
        method="GET",
        access_token=credentials.token,
        service_account_email=credentials.service_account_email,
    )

    return url