I am referring to https://community.apigee.com/questions/11381/correct-way-to-return-error-from-javascript-policy.html
I tried to raise Fault using a similar code.But faults are not raised instead the proxy continues with next policy.
Here is my code:
try
{
var errjsResponse=context.getVariable("serviceCalloutResponse.content");
throw (errjsResponse);
}
catch (errjsResponse) {
print(errjsResponse);
var errorResponse =JSON.parse(errjsResponse);
if (errorResponse.error_code == 104)
{
print("I am into 104");
errorContent = {"error_code":"104","error_type":"invalid_request","error_description":errorResponse.error_description, "more_info": "Mandatory parameter/s are missing from request"} ;
errorContentjso=JSON.stringify(errorContent);
print(errorContentjso);
errorStatus =400;
print(errorStatus);
errorReason ="Bad Request";
}
else if (errorResponse.error_code == 110)
{
errorContent = {"error_code":"110","error_type":"invalid_apiKey","error_description":errorResponse.error_description, "more_info": "ApiKey is invalid"} ;
errorStatus =401;
errorReason ="invalid_apiKey";
}
else if ((errorResponse.error_code == 111) ||(errorResponse.error_code == 112))
{
errorContent = {"error_code":"111","error_type":"invalid_authorization","error_description":errorResponse.error_description, "more_info": "Authorization header is invalid."} ;
errorStatus =401;
errorReason ="invalid_authorization";
}
context.setVariable("error.status.code", errorStatus);
context.setVariable("error.reason.phrase", errorReason);
context.setVariable("error.header.Content-Type", "application/json");
context.setVariable("error.content", errorContentjso);
print(errorContentjso);
}
I thought by setting error.status.code and other variables,it should throw the error that I have defined.But eventhough I see that these variables are set,its not throwing any error.
I want to know what am I missingā¦Please guide me..