// WebSiteIndex.cpp
//
// Behandelt Anfragen zur WebSite: index.html
// 

#include <FS.h>
#include "Globals.h"
#include "EMSettings.h"
#include "EnergyWebServer.h"


class IndexResponse : public AsyncFileResponse{
public:
  IndexResponse(fs::FS &fs, const String& path);
  String indexProcessor(const String & var);
};

String IndexResponse::indexProcessor(const String & var) {
  if (var == "RefreshInterval")
    return String(EMSettings.RefreshInterval);
  if (var == "title")
    return String(EMSettings.Name);

  return String();
}

IndexResponse::IndexResponse(fs::FS & fs, const String & path)
  : AsyncFileResponse(fs, path, String(), false,
                      [this](const String& var)->String { return indexProcessor(var); }) {
}


void EnergyWebServerClass::handleIndexHTML(AsyncWebServerRequest * request) {
  // Seiteninhalt bereitstellen
  // =======================================================================
  if (!SPIFFS.exists("/index.html")) {
    request->send(404, String(), String(F("Fehler: Datei 'index.html' nicht vorhanden!")));
    return;
  }

  // Eine Instanz von IndexResponse erstellen und versenden
  AsyncWebServerResponse *response = new IndexResponse(SPIFFS, "/index.html");
  request->send(response);
}
