#ifndef ChronoWebServer_H
#define ChronoWebServer_H

#include <Arduino.h>
#include <WiFi.h>
#include <NetworkClient.h>
#include <ESPmDNS.h>
#include <Update.h>
#include <Preferences.h>
#include <ChronoBLE.h>
#include <GunProfile.h>
#include "ChronoVersion.h"

class ChronoWebServer {
  public:

    // Constructor: Called when a ChronoWebServer object is created
    ChronoWebServer();

    void init();
    void process();
    void setTestModeCallback(void (*pFunc)());

  private:
    static void _handleRoot();
    static void _handleGunProfile();
    static void _handleProjectileProfile();
    static void _handleAddProjectileProfile();
    static void _handleSetProjectileProfile();
    static void _handleRemoveProjectileProfile();
    static void _handleAddGunProfile();
    static void _handleSetGunProfile();
    static void _handleRemoveGunProfile();
    static void _handleGetGunProfiles();
    static void _handleGetProjectileProfiles();
    static void _handleGetCurrentGunProfile();
    static void _handleGetCurrentProjectileProfile();
    static void _handleGetReadings();
    static void _handleExport();
    static void _handleReset();
    static void _handleFormat();
    static void _handleTestMode();
    static void _handleOta();
    static void _handleVersion();
    static void _handleWifi();
    static void _handleWifiSave();
    static void _handleClearWifi();
    static void _handleWifiMode();
    static void _handleInitData();

};

#endif