""" Interface to the ows-track microservice. The model is responsible to make a call to a ows-track microservice. It makes a request to ows-track endpoints ('/track//', methods=['GET']) and returns a result of the request. """ from oto import response from owsrequest import request from assets.connectors.sentry import sentry_client from assets.constants import error from assets.constants import service def get_track_by_id(track_id): """Get track details by track id. Args: track (int): Unique track id. Returns: response.Response: Track details in response message or error response. """ try: resource = service.OWS_TRACK_BY_TRACK_ID.format( track_id=track_id) track_response = request.get(service.OWS_TRACK, resource) except Exception as ex: sentry_client.captureException() return response.create_error_response( code=error.INTERNAL_ERROR, message=str(ex), status=500) if track_response.status_code == 200: track_details = track_response.json() return response.Response(message=track_details) if track_response.status_code == 404: return response.create_not_found_response( message=error.ERROR_TRACK_NOT_FOUND) return response.create_fatal_response() def get_tracks_by_product_id(product_id): """Get all track unique ids for product. Args: product_id (int): Product Id to get tracks. Returns: response.Response: Response with product tracks info from ows-product. """ try: resource = service.OWS_TRACKS_BY_PRODUCT_ID.format( product_id=product_id ) track_response = request.get(service.OWS_TRACK, resource) except Exception as ex: sentry_client.captureException() return response.create_fatal_response(str(ex)) if track_response.status_code == 200: track_data = track_response.json() return response.Response(message=track_data) if track_response.status_code == 404: return response.create_not_found_response( message=error.ERROR_RELEASE_NOT_FOUND) return response.create_fatal_response()