PatternHandler.h 995 B

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