Source code for gen3.file
import json
import requests
class Gen3FileError(Exception):
pass
[docs]class Gen3File:
"""For interacting with Gen3 file management features.
A class for interacting with the Gen3 file download services.
Supports getting presigned urls right now.
Args:
endpoint (str): The URL of the data commons.
auth_provider (Gen3Auth): A Gen3Auth class instance.
Examples:
This generates the Gen3File class pointed at the sandbox commons while
using the credentials.json downloaded from the commons profile page.
>>> endpoint = "https://nci-crdc-demo.datacommons.io"
... auth = Gen3Auth(endpoint, refresh_file="credentials.json")
... sub = Gen3File(endpoint, auth)
"""
def __init__(self, endpoint, auth_provider):
self._auth_provider = auth_provider
self._endpoint = endpoint
[docs] def get_presigned_url(self, guid, protocol="http"):
"""Generates a presigned URL for a file.
Retrieves a presigned url for a file giving access to a file for a limited time.
Args:
guid (str): The GUID for the object to retrieve.
protocol (:obj:`str`, optional): The protocol to use for picking the available URL for generating the presigned URL.
Examples:
>>> Gen3File.get_presigned_url(query)
"""
api_url = "{}/user/data/download/{}?protocol={}".format(
self._endpoint, guid, protocol
)
output = requests.get(api_url, auth=self._auth_provider).text
try:
data = json.loads(output)
except:
return output
return data