protected def getSubmissions()

in formstack-baton-requests/src/main/scala/com/gu/identity/formstackbatonrequests/services/FormstackService.scala [125:161]


  protected def getSubmissions(
    requestEmail: String,
    submissionIdEmails: List[SubmissionIdEmail],
    accountToken: FormstackAccountToken,
    encryptionPassword: String): Either[Throwable, FormstackResponses] = {

    val submissionResults: Either[Throwable, List[Either[SubmissionIdEmail, Submission]]] = submissionIdEmails.traverse { submissionIdEmail =>
      val response =
        http(s"https://www.formstack.com/api/v2/submission/${submissionIdEmail.submissionId}.json")
          .header("Authorization", accountToken.secret)
          .param("encryption_password", encryptionPassword)
          .asString

      if(!response.is2xx) {
        logger.error(response.body)
      }

      decodeIfNotSkippableError[Submission](response).map{
        case None => Left(submissionIdEmail)
        case Some(submission) =>
          //validate the submission we found in formstack actually contains references to the email we were looking for
          if (validateEmail(requestEmail, submission))
            Right(submission)
          else {
            logger.warn(s"found submission by id = ${submissionIdEmail.submissionId} but the requested email was not found, skipping")
            Left(submissionIdEmail)
          }
      }
    }

    submissionResults.map{ subResults =>
      FormstackResponses(
        found = subResults.collect{ case Right(submission) => submission},
        notFound = subResults.collect{ case Left(skippedSubmissionIdEmail) => skippedSubmissionIdEmail}
      )
    }
  }