"""Api calls of ows_podcast enpoints.""" import os import boto3 import requests from tests.integration.consts import api from tests.integration.consts import urls def add(object_id, object_type, asset_type): """Bind test asset to the given object.""" object_id = str(object_id) token = requests.get(urls.UPLOAD_TOKEN, headers=api.REQUEST_HEADERS).json() filename = token['filename'] if asset_type == api.ASSET_TYPE_IMAGE: _post_asset(filename, object_id, object_type, 'JPG') _finalize_asset(filename, [{ 'key': 'postman_sample_image.jpg', 'asset_type': 'JPG', 'asset_subtype': 'xlarge_cover', 'duration': 0 }]) else: _post_asset(filename, object_id, object_type, 'WAV') _finalize_asset(filename, [ { 'key': 'postman_sample_audio.mp3', 'asset_type': 'MP3', 'asset_subtype': None, 'duration': 3500 }, { 'key': 'postman_sample_image.flac', 'asset_type': 'FLAC', 'asset_subtype': None, 'duration': 3600 }, ]) def add_without_id(object_type, asset_type): """Bind test asset to the given object.""" token = requests.get(urls.UPLOAD_TOKEN, headers=api.REQUEST_HEADERS).json() clean_filename = token['filename'] path = '{}{}'.format(os.getcwd(), '/tests/integration/test_helpers/api') s3_client = boto3.client( 's3', aws_access_key_id=token['credentials']['aws_access_key_id'], aws_secret_access_key=token['credentials']['aws_secret_access_key'], aws_session_token=token['credentials']['token'] ) if asset_type == api.ASSET_TYPE_IMAGE: filename = '{}.jpg'.format(clean_filename) s3_client.upload_file('{}/sample_image_3000x3000.jpg'.format(path), token['bucket'], filename) _post_asset_without_id(clean_filename, object_type, 'JPG') _finalize_asset(clean_filename, [{ 'key': 'postman_sample_image.jpg', 'asset_type': 'JPG', 'asset_subtype': 'xlarge_cover', 'duration': 0 }]) else: filename = '{}.wav'.format(clean_filename) s3_client.upload_file('{}/2-seconds-of-silence.wav'.format(path), token['bucket'], filename) _post_asset_without_id(clean_filename, object_type, 'WAV') _finalize_asset(clean_filename, [ { 'key': 'postman_sample_audio.mp3', 'asset_type': 'MP3', 'asset_subtype': None, 'duration': 3500 }, { 'key': 'postman_sample_image.flac', 'asset_type': 'FLAC', 'asset_subtype': None, 'duration': 3600 }, ]) return filename def get_by_ids_types(object_ids, object_types): """Get assets by object ids and object_types.""" return requests.get(urls.ASSET_BY_IDS, params={ 'object_ids': object_ids, 'object_types': object_types }) def get_upload_token(): """Get upload token request.""" return requests.get(urls.PODCAST_UPLOAD_TOKEN, headers=api.REQUEST_HEADERS) def delete(object_id, object_type, asset_type): """Delete asset request.""" return requests.delete(urls.DELETE_ASSET, params={ 'object_id': object_id, 'object_type': object_type, 'asset_type': asset_type }, headers=api.REQUEST_HEADERS) def _post_asset(filename, object_id, object_type, post_asset_type): requests.post(urls.POST_ASSET, json={ 'filename': filename, 'object_id': object_id, 'object_type': object_type, 'asset_type': post_asset_type, 'original_filename': 'api_tests_filename.ext' }, headers=api.REQUEST_HEADERS) def _post_asset_without_id(filename, object_type, post_asset_type): return requests.post(urls.POST_ASSET, json={ 'filename': filename, 'object_type': object_type, 'object_id': None, 'asset_type': post_asset_type, 'original_filename': 'api_tests_filename.ext' }, headers=api.REQUEST_HEADERS) def _finalize_asset(filename, final_assets): requests.post(urls.ASSET_FINAL, json={ 'filename': filename, 'status': 'encoding_completed', 'errors': None, 'timestamp': '2019-11-18T10:00:00.0Z', 'final_assets': final_assets }, headers=api.REQUEST_HEADERS)