mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
#ifndef PsychicHandler_h
|
|
#define PsychicHandler_h
|
|
|
|
#include "PsychicCore.h"
|
|
#include "PsychicRequest.h"
|
|
|
|
class PsychicEndpoint;
|
|
|
|
/*
|
|
* HANDLER :: Can be attached to any endpoint or as a generic request handler.
|
|
*/
|
|
|
|
class PsychicHandler {
|
|
friend PsychicEndpoint;
|
|
|
|
protected:
|
|
PsychicRequestFilterFunction _filter;
|
|
PsychicHttpServer * _server;
|
|
|
|
String _username;
|
|
String _password;
|
|
HTTPAuthMethod _method;
|
|
String _realm;
|
|
String _authFailMsg;
|
|
|
|
std::list<PsychicClient *> _clients;
|
|
|
|
public:
|
|
PsychicHandler();
|
|
~PsychicHandler();
|
|
|
|
PsychicHandler * setFilter(PsychicRequestFilterFunction fn);
|
|
bool filter(PsychicRequest * request);
|
|
|
|
PsychicHandler *
|
|
setAuthentication(const char * username, const char * password, HTTPAuthMethod method = BASIC_AUTH, const char * realm = "", const char * authFailMsg = "");
|
|
bool needsAuthentication(PsychicRequest * request);
|
|
esp_err_t authenticate(PsychicRequest * request);
|
|
|
|
virtual bool isWebSocket() {
|
|
return false;
|
|
};
|
|
|
|
PsychicClient * checkForNewClient(PsychicClient * client);
|
|
void checkForClosedClient(PsychicClient * client);
|
|
|
|
virtual void addClient(PsychicClient * client);
|
|
virtual void removeClient(PsychicClient * client);
|
|
virtual PsychicClient * getClient(int socket);
|
|
virtual PsychicClient * getClient(PsychicClient * client);
|
|
virtual void openCallback(PsychicClient * client){};
|
|
virtual void closeCallback(PsychicClient * client){};
|
|
|
|
bool hasClient(PsychicClient * client);
|
|
int count() {
|
|
return _clients.size();
|
|
};
|
|
const std::list<PsychicClient *> & getClientList();
|
|
|
|
//derived classes must implement these functions
|
|
virtual bool canHandle(PsychicRequest * request) {
|
|
return true;
|
|
};
|
|
virtual esp_err_t handleRequest(PsychicRequest * request) = 0;
|
|
};
|
|
|
|
#endif |