def getToken()

in app/controllers/BulkDownloadController.scala [280:316]


  def getToken(tokenId:String, notOnlyRushes:Option[Boolean]) = Action.async {
    serverTokenDAO.get(tokenId).flatMap({
      case None=>
        Future(NotFound(GenericErrorResponse("not_found","No such bulk download").asJson))
      case Some(token)=>
        serverTokenDAO.remove(tokenId).flatMap(_=> {
          token.associatedId match {
            case None=>
              logger.error(s"Token $tokenId is invalid, it does not contain a project ID")
              Future(NotFound(GenericErrorResponse("not_found","Invalid token").asJson))
            case Some(combinedId)=>
              val ids = combinedId.split("\\|")
              val projectId = ids.head
              val vaultId = ids(1)

              logger.debug(s"Combined ID is $combinedId, project ID is $projectId, vault ID is $vaultId")

              withVaultAsync(vaultId) { userInfo =>
                createRetrievalToken(token.createdForUser.getOrElse(""), combinedId).flatMap(retrievalToken=> {
                  getContent(userInfo, projectId, !notOnlyRushes.getOrElse(false)).map({
                    case Right(synopses)=>
                      val meta = LightboxBulkEntry(projectId, s"Vaultdoor download for project $projectId", token.createdForUser.getOrElse(""), ZonedDateTime.now(), 0, synopses.length, 0)
                      Ok(BulkDownloadInitiateResponse("ok", meta, retrievalToken.value, synopses).asJson)
                    case Left(problem)=>
                      logger.warn(s"Could not complete bulk download for token $tokenId: $problem")
                      BadRequest(GenericErrorResponse("invalid", problem).asJson)
                  })
                })
              }
          }
        }).recover({
          case err:Throwable=>
            logger.error(s"Could not get bulk download for token $tokenId: ", err)
            InternalServerError(GenericErrorResponse("error","Server failure, please check the logs").asJson)
        })
    })
  }