Commit eb0eec17 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

adminui WIP

parent 49dba6b8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@
#include "fnord-base/exception.h"
#include "fnord-base/stringutil.h"
#include "fnord-base/io/fileutil.h"
#include "fnord/webui/bundle.h"
#include "bundle.h"

namespace fnord {
namespace webui {
+8 −10
Original line number Diff line number Diff line
@@ -11,8 +11,8 @@
#include <fnord-base/uri.h>
#include <fnord-base/stringutil.h>
#include <fnord-base/io/fileutil.h>
#include <fnord/webui/bundle.h>
#include <fnord/webui/httpmount.h>
#include "bundle.h"
#include "httpmount.h"

namespace fnord {
namespace webui {
@@ -27,10 +27,10 @@ HTTPMount::HTTPMount(
    app_components_base_url_(
        FileUtil::joinPaths(base_url, "__components__") + "/") {}

bool HTTPMount::handleHTTPRequest(
void HTTPMount::handleHTTPRequest(
    http::HTTPRequest* request,
    http::HTTPResponse* response) {
  fnord::URI uri(request->getUrl());
  fnord::URI uri(request->uri());
  auto path = uri.path();

  bundle_->build(app_url_); // FIXPAUL
@@ -39,21 +39,21 @@ bool HTTPMount::handleHTTPRequest(
    response->setStatus(http::kStatusOK);
    response->addHeader("Content-Type", "text/html; charset=utf-8");
    response->addBody(bundle_->applicationHTML());
    return true;
    return;
  }

  if (path == app_js_url_) {
    response->setStatus(http::kStatusOK);
    response->addHeader("Content-Type", "application/javascript");
    response->addBody(bundle_->applicationJS());
    return true;
    return;
  }

  if (path == app_css_url_) {
    response->setStatus(http::kStatusOK);
    response->addHeader("Content-Type", "text/css");
    response->addBody(bundle_->applicationCSS());
    return true;
    return;
  }

  if (StringUtil::beginsWith(path, app_components_base_url_)) {
@@ -63,11 +63,9 @@ bool HTTPMount::handleHTTPRequest(
      response->setStatus(http::kStatusOK);
      response->addHeader("Content-Type", "text/plain"); // FIXPAUL
      response->addBody(fnord::Assets::getAsset(component_path));
      return true;
      return;
    }
  }

  return false;
}

} // namespace webui
+3 −3
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
 */
#ifndef _FNORD_WEBUI_HTTPMOUNT_H
#define _FNORD_WEBUI_HTTPMOUNT_H
#include <fnord-http/httphandler.h>
#include <fnord-http/httpservice.h>
#include <fnord-http/httprequest.h>
#include <fnord-http/httpresponse.h>

@@ -17,14 +17,14 @@ namespace fnord {
namespace webui {
class Bundle;

class HTTPMount : public http::HTTPHandler {
class HTTPMount : public http::HTTPService {
public:

  HTTPMount(
      Bundle* bundle,
      const std::string base_url = "/");

  bool handleHTTPRequest(
  void handleHTTPRequest(
      http::HTTPRequest* request,
      http::HTTPResponse* response) override;

+3 −0
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@ set(FNORDMETRIC_SOURCES
    $<TARGET_OBJECTS:fnord-json>
    $<TARGET_OBJECTS:fnord-metricdb>
    $<TARGET_OBJECTS:fnord-sstable>
    ../3rdparty/libfnord/fnord-webcomponents/bundle.cc
    ../3rdparty/libfnord/fnord-webcomponents/httpmount.cc
    ../src/adminui.cc
    ../src/environment.cc
    ../src/chartsql/areachartbuilder.cc
    ../src/chartsql/barchartbuilder.cc
+7 −28
Original line number Diff line number Diff line
@@ -13,15 +13,11 @@

namespace fnordmetric {

std::unique_ptr<http::HTTPHandler> AdminUI::getHandler() {
  return std::unique_ptr<http::HTTPHandler>(new AdminUI());
}

AdminUI::AdminUI() :
AdminUI::AdminUI(
    std::string path_prefix /* = "/admin" */) :
    webui_bundle_("FnordMetric"),
    webui_mount_(&webui_bundle_, "/admin") {
    webui_mount_(&webui_bundle_, path_prefix) {
  webui_bundle_.addComponent("fnord/3rdparty/codemirror.js");

  webui_bundle_.addComponent("fnord/3rdparty/fontawesome.woff");
  webui_bundle_.addComponent("fnord/3rdparty/fontawesome.css");
  webui_bundle_.addComponent("fnord/3rdparty/reset.css");
@@ -72,37 +68,20 @@ AdminUI::AdminUI() :

}

bool AdminUI::handleHTTPRequest(
void AdminUI::handleHTTPRequest(
    http::HTTPRequest* request,
    http::HTTPResponse* response) {

  if (env()->verbose()) {
    fnord::util::LogEntry log_entry;
    log_entry.append("__severity__", "DEBUG");
    log_entry.printf(
        "__message__",
        "HTTP request: %s %s",
        request->getMethod().c_str(),
        request->getUrl().c_str());

    env()->logger()->log(log_entry);
  }

  if (webui_mount_.handleHTTPRequest(request, response)) {
    return true;
  }

  fnord::URI uri(request->getUrl());
  fnord::URI uri(request->uri());
  auto path = uri.path();

  if (path == "/") {
    response->setStatus(http::kStatusFound);
    response->addHeader("Content-Type", "text/html; charset=utf-8");
    response->addHeader("Location", "/admin");
    return true;
    return;
  }

  return false;
  webui_mount_.handleHTTPRequest(request, response);
}


Loading