private[fcm] def handleResponse()

in notificationworkerlambda/src/main/scala/com/gu/notifications/worker/delivery/fcm/FcmTransportJdkImpl.scala [94:104]


  private[fcm] def handleResponse(response: HttpResponse[String]): Try[FcmResponse] = {
    if (response.statusCode() == 200)
      parseBody(response.body())
    else
      parseError(response.body()).flatMap(fcmError => fcmError.error.fcmErrorCode.getOrElse(fcmError.error.status) match {
        case code if invalidTokenErrorCodes.contains(code) => Failure(InvalidTokenException(fcmError.error))
        case code if internalServerErrorCodes.contains(code) => Failure(FcmServerException(fcmError.error))
        case code if quotaExceededErrorCodes.contains(code) => Failure(QuotaExceededException(fcmError.error))
        case _ => Failure(UnknownException(fcmError.error))
      })
  }