"""Release utils.""" import json from bulk_metadata_ingester_common.models.bulk_release import BulkRelease from lambdacommon.aws import s3 def get_release_track_list(bucket, key, item_index=None): """Get a release from a JSON document. Args: bucket (str): The bucket that holds the document key (str): The key to the document item_index (str): The index in the document to return Returns: list | dict : A list or dict, representing one or more releases, and it's tracks. # noqa: E501 """ # Grab file object passed in via key file = s3.client.get_object(Bucket=bucket, Key=key) # Get the JSON content from the object file_content = file.get('Body').read() # Convert the JSON into a dict data = json.loads(file_content) # Return an item index if passed, or whole file. return data[item_index] if item_index else data def get_all_release_models(bucket, key): """Return a dict of all releases in BulkRelease model format. Args: bucket (str): The bucket that holds the document key (str): The key to the document Returns: dict : A dict of release models, keyed by their item_index. """ all_releases = get_release_track_list(bucket, key) models = {} for k, v in all_releases.items(): models[k] = BulkRelease(json_release_rows=v) return models