Loading app/controllers/CreateIndexController.scala 0 → 100644 +16 −0 Original line number Diff line number Diff line package controllers import models.ElasticServer import play.api.libs.json.Json import scala.concurrent.ExecutionContext.Implicits.global class CreateIndexController extends BaseController { def processRequest = (request, client) => { client.createIndex(request.get("index"), request.getOpt("metadata").getOrElse(Json.obj()), ElasticServer(request.host, request.authentication)).map { response => Status(response.status)(response.body) } } } app/controllers/GetIndexMetadataController.scala 0 → 100644 +14 −0 Original line number Diff line number Diff line package controllers import models.{ElasticServer, IndexMetadata} import scala.concurrent.ExecutionContext.Implicits.global class GetIndexMetadataController extends BaseController { def processRequest = (request, client) => client.getIndexMetadata(request.get("index"), ElasticServer(request.host, request.authentication)).map { response => Ok(IndexMetadata(response.body)) } } app/elastic/ElasticClient.scala +10 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,16 @@ trait ElasticClient { execute(s"${target.host}$path", "POST", Some(body.toString), target.authentication) } def getIndexMetadata(index: String, target: ElasticServer) = { val path = s"/_cluster/state/metadata/$index?human=true" execute(s"${target.host}$path", "GET", None, target.authentication) } def createIndex(index: String, metadata: JsValue, target: ElasticServer) = { val path = s"/$index" execute(s"${target.host}$path", "POST", Some(metadata.toString), target.authentication) } def executeRequest(method: String, path: String, data: Option[JsValue], target: ElasticServer) = execute(s"${target.host}/$path", method, data.map(_.toString), target.authentication) Loading app/models/IndexMetadata.scala 0 → 100644 +12 −0 Original line number Diff line number Diff line package models import play.api.libs.json.{JsValue, Json} object IndexMetadata { def apply(metadata: JsValue) = Json.obj( "mappings" -> (metadata \\ "mappings").head, "settings" -> (metadata \\ "settings").head ) } conf/routes +2 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ POST /apis/rest @controllers.RestController.execute POST /apis/get_cluster_mapping @controllers.GetClusterMappingController.execute POST /apis/get_aliases @controllers.GetAliasesController.execute POST /apis/update_aliases @controllers.UpdateAliasesController.execute POST /apis/get_index_metadata @controllers.GetIndexMetadataController.execute POST /apis/create_index @controllers.CreateIndexController.execute GET /apis/hosts @controllers.HostsController.index Loading Loading
app/controllers/CreateIndexController.scala 0 → 100644 +16 −0 Original line number Diff line number Diff line package controllers import models.ElasticServer import play.api.libs.json.Json import scala.concurrent.ExecutionContext.Implicits.global class CreateIndexController extends BaseController { def processRequest = (request, client) => { client.createIndex(request.get("index"), request.getOpt("metadata").getOrElse(Json.obj()), ElasticServer(request.host, request.authentication)).map { response => Status(response.status)(response.body) } } }
app/controllers/GetIndexMetadataController.scala 0 → 100644 +14 −0 Original line number Diff line number Diff line package controllers import models.{ElasticServer, IndexMetadata} import scala.concurrent.ExecutionContext.Implicits.global class GetIndexMetadataController extends BaseController { def processRequest = (request, client) => client.getIndexMetadata(request.get("index"), ElasticServer(request.host, request.authentication)).map { response => Ok(IndexMetadata(response.body)) } }
app/elastic/ElasticClient.scala +10 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,16 @@ trait ElasticClient { execute(s"${target.host}$path", "POST", Some(body.toString), target.authentication) } def getIndexMetadata(index: String, target: ElasticServer) = { val path = s"/_cluster/state/metadata/$index?human=true" execute(s"${target.host}$path", "GET", None, target.authentication) } def createIndex(index: String, metadata: JsValue, target: ElasticServer) = { val path = s"/$index" execute(s"${target.host}$path", "POST", Some(metadata.toString), target.authentication) } def executeRequest(method: String, path: String, data: Option[JsValue], target: ElasticServer) = execute(s"${target.host}/$path", method, data.map(_.toString), target.authentication) Loading
app/models/IndexMetadata.scala 0 → 100644 +12 −0 Original line number Diff line number Diff line package models import play.api.libs.json.{JsValue, Json} object IndexMetadata { def apply(metadata: JsValue) = Json.obj( "mappings" -> (metadata \\ "mappings").head, "settings" -> (metadata \\ "settings").head ) }
conf/routes +2 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ POST /apis/rest @controllers.RestController.execute POST /apis/get_cluster_mapping @controllers.GetClusterMappingController.execute POST /apis/get_aliases @controllers.GetAliasesController.execute POST /apis/update_aliases @controllers.UpdateAliasesController.execute POST /apis/get_index_metadata @controllers.GetIndexMetadataController.execute POST /apis/create_index @controllers.CreateIndexController.execute GET /apis/hosts @controllers.HostsController.index Loading