Source code for gen3.object
import requests
from gen3.utils import raise_for_status_and_print_error
class Gen3ObjectError(Exception):
pass
[docs]
class Gen3Object:
"""For interacting with Gen3 object level features.
A class for interacting with the Gen3 object services.
Currently allows creating and deleting of an object from the Gen3 System.
Args:
auth_provider (Gen3Auth): A Gen3Auth class instance.
Examples:
This generates the Gen3Object class pointed at the sandbox commons while
using the credentials.json downloaded from the commons profile page.
>>> auth = Gen3Auth(refresh_file="credentials.json")
... object = Gen3Object(auth)
"""
def __init__(self, auth_provider=None):
self._auth_provider = auth_provider
self.service_endpoint = "/mds"
def create_object(self, file_name, authz, metadata=None, aliases=None):
url = (
self._auth_provider.endpoint.rstrip("/")
+ self.service_endpoint
+ "/objects"
)
body = {
"file_name": file_name,
"authz": authz,
"metadata": metadata,
"aliases": aliases,
}
response = requests.post(url, json=body, auth=self._auth_provider)
raise_for_status_and_print_error(response)
data = response.json()
return data["guid"], data["upload_url"]
[docs]
def delete_object(self, guid, delete_file_locations=False):
"""
Delete the object from indexd, metadata service and optionally all storage locations
Args:
`guid` -- GUID of the object to delete
`delete_file_locations` -- if True, removes the object from existing bucket location(s) through fence
Returns:
Nothing
"""
delete_param = "?delete_file_locations" if delete_file_locations else ""
url = (
self._auth_provider.endpoint.rstrip("/")
+ self.service_endpoint
+ "/objects/"
+ guid
+ delete_param
)
response = requests.delete(url, auth=self._auth_provider)
raise_for_status_and_print_error(response)