in support-frontend/app/controllers/PaperRound.scala [31:64]
def getAgents(postcode: String): Action[AnyContent] = NoCacheAction().async { implicit request =>
serviceProvider
.forUser(testUserService.isTestUser(request))
.coverage(CoverageEndpoint.RequestBody(postcode = postcode))
.map { result =>
{
val response = result.data.status match {
case CO => Ok(toJson(Covered(result.data.agents.map(fromAgentsCoverage(_)))))
case NC => Ok(toJson(NotCovered))
case MP => NotFound(toJson(UnknownPostcode))
case IP => BadRequest(toJson(ProblemWithInput))
case IE =>
val errorMessage = s"${result.data.message}"
logger.error(scrub"Got internal error from PaperRound: $errorMessage")
InternalServerError(toJson(PaperRoundError(errorMessage)))
}
result.data.status match {
case IE => AwsCloudWatchMetricPut(cloudwatchClient)(getDeliveryAgentsFailure(stage))
case _ => AwsCloudWatchMetricPut(cloudwatchClient)(getDeliveryAgentsSuccess(stage))
}
response
}
} recover {
case PaperRound.Error(statusCode, message, errorCode) =>
val responseBody = s"$errorCode – Got $statusCode reponse with message $message"
logger.error(scrub"Error calling PaperRound, returning $responseBody")
AwsCloudWatchMetricPut(cloudwatchClient)(getDeliveryAgentsFailure(stage))
InternalServerError(responseBody)
case error =>
logger.error(scrub"Failed to get agents from PaperRound due to: $error")
AwsCloudWatchMetricPut(cloudwatchClient)(getDeliveryAgentsFailure(stage))
InternalServerError(s"Unknown error: $error")
}
}