def getAgents()

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")
    }
  }