def moveFile()

in app/controllers/FileMoveController.scala [46:69]


  def moveFile(fileId:String, to:String) = IsAuthenticatedAsync { uid=> request=>
    scanTargetDAO.targetForBucket(to).flatMap({
      case None=>
        Future(NotFound(GenericErrorResponse("not_found","No scan target with that name").asJson))
      case Some(Left(dbError))=>
        logger.error(s"Could not look up scan target in dynamo: ${dbError.toString}")
        Future(InternalServerError(GenericErrorResponse("db_error",dbError.toString).asJson))
      case Some(Right(scanTarget))=>
        if(scanTarget.enabled) {
          (fileMoveQueue ? EnqueueMove(fileId, scanTarget.bucketName, uid)).mapTo[FileMoveResponse]
            .map({
              case EnqueuedOk(_) => Ok(GenericErrorResponse("ok", "move is enqueued").asJson)
              case EnqueuedProblem(_, problem) => InternalServerError(GenericErrorResponse("error", problem).asJson)
            })
            .recover({
              case err: Throwable =>
                logger.error(s"Could not enqueue move action: ${err.getMessage}", err)
                InternalServerError(GenericErrorResponse("error", err.getMessage).asJson)
            })
        } else {
          Future(Conflict(GenericErrorResponse("disabled","this scan target is disabled").asJson))
        }
    })
  }