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