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

load previous requests executed by user

parent be23f162
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
package controllers

import java.sql.Date
import java.text.SimpleDateFormat
import javax.inject.Inject

import controllers.auth.AuthenticationModule
import dao.{RestHistoryDAO, RestRequest}
import elastic.{ElasticClient, Error, Success}
import models.{CerebroResponse, ClusterMapping, Hosts}
import play.api.libs.json.{JsArray, Json}
import play.api.libs.json.{JsArray, JsString, Json}

import scala.concurrent.ExecutionContext.Implicits.global
import scala.util.control.NonFatal

class RestController @Inject()(val authentication: AuthenticationModule,
                               val hosts: Hosts,
@@ -38,4 +40,24 @@ class RestController @Inject()(val authentication: AuthenticationModule,
    }
  }

  def history = process { request =>
    implicit val writes = Json.writes[RestRequest]
    val dateFormat = new SimpleDateFormat("dd/MM HH:mm:ss")
    restHistoryDAO.all(request.user.map(_.name).getOrElse("")).map {
      case requests =>
        val body = requests.map { request =>
          Json.obj(
            "path" -> JsString(request.path),
            "method" -> JsString(request.method),
            "body" -> JsString(request.body),
            "created_at" -> JsString(dateFormat.format(request.createdAt))
          )
        }
        CerebroResponse(200, JsArray(body))
    }.recover {
      case NonFatal(e) =>
        CerebroResponse(500, Json.obj("Error" -> JsString(s"Error while loading requests history: ${e.getMessage}")))
    }
  }

}
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ POST /aliases/get_aliases controllers.AliasesControl
POST        /aliases/update_aliases                   controllers.AliasesController.updateAliases

# Rest module
POST        /rest/history                             controllers.RestController.history
POST        /rest/request                             controllers.RestController.request
POST        /rest                                     controllers.RestController.index

+22 −0
Original line number Diff line number Diff line
@@ -1151,6 +1151,24 @@ angular.module('cerebro').controller('RestController', ['$scope', '$http',
      );
    };

    $scope.loadRequest = function(request) {
      $scope.method = request.method;
      $scope.path = request.path;
      $scope.editor.setValue(request.body);
      $scope.editor.format();
    };

    $scope.loadHistory = function() {
      RestDataService.history(
        function(history) {
          $scope.history = history;
        },
        function(error) {
          AlertService.error('Error while loading request history', error);
        }
      );
    };

    $scope.updateOptions = function(text) {
      if ($scope.mappings) {
        var autocomplete = new URLAutocomplete($scope.mappings);
@@ -1191,6 +1209,10 @@ angular.module('cerebro').factory('RestDataService', ['DataService',
      DataService.send('/rest', {}, success, error);
    };

    this.history = function(success, error) {
      DataService.send('/rest/history', {}, success, error);
    };

    this.execute = function(method, path, data, success, error) {
      var requestData = {method: method, data: data, path: path};
      DataService.send('/rest/request', requestData, success, error);
+20 −0
Original line number Diff line number Diff line
@@ -40,6 +40,26 @@
        </select>
      </div>
    </div>
    <div class="row">
      <div class="col-xs-12">
        <a data-toggle="collapse" data-parent="#restAccordion" target="_self" href="#restHistory" ng-click="loadHistory()">
          <i class="fa fa-history"></i> previous requests
        </a>
      </div>
      <div class="col-xs-12 panel-collapse collapse" id="restHistory" ng-show="history.length">
        <a data-toggle="collapse" data-parent="#restAccordion" target="_self" href="#restHistory">
        <span>
          <table class="table table-condensed">
            <tr ng-repeat="h in history" class="normal-action" ng-click="loadRequest(h)">
              <td style="width: 130px">{{h.created_at}}</td>
              <td style="width: 1%">{{h.method}}</td>
              <td>{{h.path}}</td>
            </tr>
          </table>
        </span>
        </a>
      </div>
    </div>
    <div class="form-group row">
      <div class="col-lg-12">
        <div id="rest-client-editor" class="ace-cerebro" style="height: 600px;"></div>
+18 −0
Original line number Diff line number Diff line
@@ -42,6 +42,24 @@ angular.module('cerebro').controller('RestController', ['$scope', '$http',
      );
    };

    $scope.loadRequest = function(request) {
      $scope.method = request.method;
      $scope.path = request.path;
      $scope.editor.setValue(request.body);
      $scope.editor.format();
    };

    $scope.loadHistory = function() {
      RestDataService.history(
        function(history) {
          $scope.history = history;
        },
        function(error) {
          AlertService.error('Error while loading request history', error);
        }
      );
    };

    $scope.updateOptions = function(text) {
      if ($scope.mappings) {
        var autocomplete = new URLAutocomplete($scope.mappings);
Loading