"""Route handlers for Sme endpoints.""" from account.api import app from account.constants import error, header from account.logic import ( sme, subaccount, ) from flask import request from owsrequest import flask_request from owsresponse import response from owsresponse.adaptors.flask import flaskify @app.route('/sony/vendor/', methods=['HEAD']) def is_vendor_sme(vendor_id): """Validate vendor is Sony distributed. Given vendor with , returns status code 200 if vendor is Sony distributed, otherwise returns 404. Args: vendor_id (int): unique identifier for a vendor. Returns: Flask.response. """ access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify( response.create_error_response( code=error.ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401 ) ) validation = flask_request.verify_grass_access(request, required=False, vendor=vendor_id) if not validation: return flaskify(validation) data = sme.is_sme_vendor(vendor_id) return flaskify(data) @app.route('/sony/subaccount/', methods=['HEAD']) def is_subaccount_sme(subaccount_id): """Validate subaccount is Sony distributed. Given subaccount with , returns status code 200 if subaccount is Sony distributed, otherwise returns 404. Args: subaccount_id (int): unique identifier for a vendor. Returns: Flask.response. """ access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify( response.create_error_response( code=error.ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401 ) ) grass_account_type, grass_account_id = flask_request.get_grass_headers(request) validation = flask_request.verify_grass_access( request, required=False, subaccount=subaccount_id, vendor=grass_account_id ) if not validation: return flaskify(validation) if grass_account_type == header.GRASS_ACCOUNT_TYPE_VENDOR: data = subaccount.is_subaccount_for_vendor(subaccount_id, grass_account_id) if not data: return flaskify(data) data = sme.is_sme_subaccount(subaccount_id) return flaskify(data)