"""Interface for the ows-account microservice.""" from flask import g from oto import response from owsrequest import request as requests from sentry_sdk import capture_exception from product.constants import header from product.constants import service_name def check_subaccount_ownership(vendor_id, subaccount_id): """Check if subaccount_id belongs to vendor_id. Args: vendor_id (int): unique identifier of the vendor. subaccount_id (int): unique identifier of the subaccount. Returns: Response: Response containing the subaccount details. """ try: ownership_response = requests.head( service_name.OWS_ACCOUNT, "/{}/subaccount/{}".format(vendor_id, subaccount_id), ) except Exception as exception: capture_exception(exception) g.log.exception(exception.args) return response.create_fatal_response( message="Could not connect to {}.".format(service_name.OWS_ACCOUNT) ) return response.Response(status=ownership_response.status_code) def get_enabled_vendor_features_control(vendor_id): """Get a list of enabled features control for a vendor. Args: vendor_id (int): unique identifier of the vendor. Returns: response.Response: containing the list of vendor features control. """ try: result = requests.get( service_name.OWS_ACCOUNT, "/vendor/{}/features".format(vendor_id), headers={"Content-Type": header.CONTENT_TYPE}, ) except Exception as exception: capture_exception(exception) return response.create_fatal_response( message="Could not connect to ows-accoount." ) return response.Response(result.json()) def get_subaccount_info(subaccount_id): """Get the subaccount details for a subaccount id. Args: subaccount_id (int): unique identifier of the subaccount. Returns: response.Response: Response containing the subaccount details. """ try: result = requests.get( service_name.OWS_ACCOUNT, "/subaccount/{}".format(subaccount_id), headers={"Content-Type": header.CONTENT_TYPE}, ) except Exception as exception: capture_exception(exception) return response.create_fatal_response( message="Could not connect to ows-accoount." ) return response.Response(result.json()) def get_vendor_company_brand(vendor_id): """Get the company brand for the vendor. Args: vendor_id (int): unique identifier of the vendor. Returns: response.Response: the company brand. """ try: result = requests.get( service_name.OWS_ACCOUNT, "/vendor/brand/{}".format(vendor_id), headers={"Content-Type": header.CONTENT_TYPE}, ) except Exception as exception: capture_exception(exception) return response.create_fatal_response( message="Could not connect to ows-accoount." ) if result.status_code != 200: result_json = result.json() message = "ows-account returned unexpected status_code of {}".format( result.status_code ) g.log.error(message) return response.create_error_response( result_json["code"], result_json["message"], status=result.status_code ) return response.Response(result.text, status=result.status_code)