Commit 1ed0a170 authored by Leonardo Menezes's avatar Leonardo Menezes
Browse files

added rest client section

parent ce716d6d
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
package controllers


import models.ClusterMapping
import scala.concurrent.ExecutionContext.Implicits.global

class GetClusterMappingController extends BaseController {

  def processRequest = (request, client) => client.getClusterMapping(request.host).map { response =>
    Ok(ClusterMapping(response.body))
  }

}
+14 −0
Original line number Diff line number Diff line
package controllers

class RestController extends ElasticActionController {

  def processElasticRequest = (request, client) => {
    client.executeRequest(
      request.get("method"),
      request.get("path"),
      request.getOpt("data"),
      request.host
    )
  }

}
+5 −0
Original line number Diff line number Diff line
@@ -77,6 +77,11 @@ trait ElasticClient {
  def getIndexRecovery(index: String, host: String) =
    ElasticResponse(WS.url(s"$host/$index/_recovery?active_only=true&human=true").get())

  def getClusterMapping(host: String) =
    ElasticResponse(WS.url(s"$host/_mapping").get())

  def executeRequest(method: String, path: String, data: Option[String], host: String) =
    ElasticResponse(data.foldLeft(WS.url(s"$host/$path"))(_ withBody _).execute(method))

}

+2 −0
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@ class CerebroRequest(val host: String, body: JsValue) {

  def getArray(name: String) = (body \ name).asOpt[Array[String]].getOrElse(throw MissingRequiredParamException(name))

  def getOpt(name: String) =
    (body \ name).asOpt[String]
}

object CerebroRequest {
+12 −0
Original line number Diff line number Diff line
package models

import play.api.libs.json.{Json, JsString, JsObject, JsValue}

object ClusterMapping {

  def apply(mappings: JsValue) = JsObject(mappings.as[JsObject].value.map {
    case (index, indexMappings) =>
      (index -> Json.obj("types" -> (indexMappings \ "mappings").as[JsObject].keys.map(JsString(_))))
  })

}
Loading