Commit ec1b10e1 authored by Leonardo Menezes's avatar Leonardo Menezes
Browse files

better error messages

parent 0eaf464b
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
package controllers

import controllers.auth.AuthenticationModule
import controllers.auth.{AuthRequest, AuthenticationModule}
import exceptions.MissingRequiredParamException
import models.{CerebroRequest, CerebroResponse, Hosts}
import play.api.Logger
import play.api.libs.json.Json
import play.api.libs.json.{JsValue, Json}
import play.api.mvc.{Controller, Result}

import scala.concurrent.Future
@@ -16,8 +16,6 @@ trait BaseController extends Controller with AuthSupport {

  val hosts: Hosts

  protected val logger = Logger("elastic")

  type RequestProcessor = (CerebroRequest) => Future[Result]

  final def process(processor: RequestProcessor) = AuthAction(authentication).async(parse.json) { request =>
@@ -25,10 +23,15 @@ trait BaseController extends Controller with AuthSupport {
      processor(CerebroRequest(request, hosts))
    } catch {
      case e: MissingRequiredParamException =>
        Future.successful(CerebroResponse(400, Json.obj("error" -> e.getMessage))) // FIXME: proper error handling
        Future.successful(CerebroResponse(400, Json.obj("error" -> e.getMessage)))
      case NonFatal(e) =>
        Future.successful(CerebroResponse(500, Json.obj("error" -> "Error"))) // FIXME: proper error handling
        Logger.error(s"Error processing request [${formatRequest(request)}]", e)
        Future.successful(CerebroResponse(500, Json.obj("error" -> e.getMessage)))
    }
  }

  private def formatRequest(request: AuthRequest[JsValue]): String = {
    s"path: ${request.uri}, body: ${request.body.toString}"
  }

}
+2 −1
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ import play.api.libs.json.{JsArray, JsString, Json}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.util.Try
import scala.util.control.NonFatal
import play.api.Logger

class RestController @Inject()(val authentication: AuthenticationModule,
                               val hosts: Hosts,
@@ -28,7 +29,7 @@ class RestController @Inject()(val authentication: AuthenticationModule,
        val bodyAsString = body.map(_.toString).getOrElse("{}")
        val username = request.user.map(_.name).getOrElse("")
        Try(restHistoryDAO.save(RestRequest(path, method, bodyAsString, username, new Date(System.currentTimeMillis)))).recover {
          case DAOException(msg, e) => logger.error(msg, e)
          case DAOException(msg, e) => Logger.error(msg, e)
        }
        CerebroResponse(s.status, s.body)

+1 −2
Original line number Diff line number Diff line
@@ -16,8 +16,7 @@
    </appender>

    <logger name="play" level="INFO"/>
    <logger name="application" level="DEBUG"/>
    <logger name="elastic" level="TRACE"/>
    <logger name="application" level="INFO"/>

    <!-- Off these ones as they are annoying, and anyway we manage configuration ourself -->
    <logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF"/>