""" Audit Release Logic ============= This logic calls to VAPI and handles responses for audit releases while consuming from the label queue and sending to the search queue """ from labelaudit.connectors import api_client as api_connector from labelaudit.logic.result import Result def set_audit_releases(audit_id): """Inserts qualified releases for the label under audit into the db Args: api_client (labelaudit.lib.vapi.api_client.ApiClient): VAPI client audit_id (int): ID of the audit record for which to set releases Return: labelaudit.logic.result.Result: object representing the outcome. The message object contained in the result is the number of releases added to the audit """ audit_params = {'youtubeAuditId': audit_id} response = api_connector.get_client().post( '/youtubeauditqualifiedreleases', params=audit_params ) response_body = response.json() result = Result(status=response.status_code) if response.status_code in (200, 201): num_releases = response_body['youtubeAuditQualifiedReleasesCount'] result.message = num_releases else: result.errors = response_body.get('fault') return result def fetch_audit_releases(audit_id, offset=0): """Fetches the qualified releases for the label under audit Args: api_client (labelaudit.lib.vapi.api_client.ApiClient): VAPI client audit_id (int): ID of the audit record for which to set releases offset (int): Page offset used to fetch result Return: labelaudit.logic.result.Result: object representing the outcome. The message object contained in the result is a collection of qualified releases for the page offset """ audit_params = {'youtubeAuditId': audit_id, 'offset': offset} response = api_connector.get_client().get( '/youtubeauditrelease', params=audit_params) response_body = response.json() result = Result(status=response.status_code) if response.status_code == 200: result.message = response_body else: result.errors = response_body.get('fault') return result def update_audit_release(audit_release_id, audit_params): """Updates the qualified releases for the label under audit Args: audit_release_id (int): ID of the audit release for which to set data audit_params (dict): Audit data to update Return: labelaudit.logic.result.Result: object representing the outcome. The message object contained in the result is the audit release that has been updated """ vapi_path = '/youtubeauditrelease/{}'.format(audit_release_id) response = api_connector.get_client().put(vapi_path, json=audit_params) response_body = response.json() result = Result(status=response.status_code) if response.status_code == 200: result.message = response_body else: result.errors = response_body.get('fault') return result