PatternHandler.h 1015 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifndef _PATTERNHANDLER_H
  2. #define _PATTERNHANDLER_H
  3. #include <Arduino.h>
  4. #include <ESP8266WebServer.h>
  5. #include <Vector.h>
  6. #include <functional>
  7. #include <TokenIterator.h>
  8. class UrlTokenBindings {
  9. public:
  10. UrlTokenBindings(TokenIterator& patternTokens, TokenIterator& requestTokens);
  11. bool hasBinding(const String& key) const;
  12. const char* get(const String& key) const;
  13. private:
  14. TokenIterator& patternTokens;
  15. TokenIterator& requestTokens;
  16. };
  17. class PatternHandler : public RequestHandler {
  18. public:
  19. typedef std::function<void(UrlTokenBindings*)> TPatternHandlerFn;
  20. PatternHandler(const String& pattern,
  21. const HTTPMethod method,
  22. const TPatternHandlerFn fn);
  23. ~PatternHandler();
  24. bool canHandle(HTTPMethod requestMethod, String requestUri) override;
  25. bool handle(ESP8266WebServer& server, HTTPMethod requesetMethod, String requestUri) override;
  26. private:
  27. char* _pattern;
  28. TokenIterator* patternTokens;
  29. const HTTPMethod method;
  30. const PatternHandler::TPatternHandlerFn fn;
  31. };
  32. #endif