in riff-raff/app/controllers/api.scala [452:499]
def validate = ApiJsonEndpoint("validate") { implicit request =>
request.body.asText.fold {
Json.obj(
"response" -> Json.obj(
"status" -> "error",
"errors" -> Json.arr("No configuration provided in request body")
)
)
} { body =>
val validatedGraph =
YamlResolver.resolveDeploymentGraph(body, deploymentTypes, All)
validatedGraph match {
case Valid(graph) =>
Json.obj(
"response" -> Json.obj(
"status" -> "ok",
"result" -> "passed",
"deployments" -> graph.toList.map { deployment =>
Json.obj(
"name" -> deployment.name,
"type" -> deployment.`type`,
"stacks" -> deployment.stacks.toList,
"regions" -> deployment.regions.toList,
"actions" -> deployment.actions.toList,
"app" -> deployment.app,
"contentDirectory" -> deployment.contentDirectory,
"dependencies" -> deployment.dependencies,
"parameters" -> deployment.parameters
)
}
)
)
case Invalid(errors) =>
Json.obj(
"response" -> Json.obj(
"status" -> "ok",
"result" -> "failed",
"errors" -> errors.errors.toList.map { err =>
Json.obj(
"context" -> err.context,
"message" -> err.message
)
}
)
)
}
}
}