X Tutup
#ifndef SRC_RESOURCERESOLVER_HPP_ #define SRC_RESOURCERESOLVER_HPP_ #include // Arduino declares it's own min max, incompatible with the stl... #undef min #undef max #include #include #include "HTTPNode.hpp" #include "WebsocketNode.hpp" #include "ResourceNode.hpp" #include "ResolvedResource.hpp" #include "HTTPMiddlewareFunction.hpp" namespace httpsserver { /** * \brief This class is used internally to resolve a string URL to the corresponding HTTPNode */ class ResourceResolver { public: ResourceResolver(); ~ResourceResolver(); void registerNode(HTTPNode *node); void unregisterNode(HTTPNode *node); void setDefaultNode(HTTPNode *node); void resolveNode(const std::string &method, const std::string &url, ResolvedResource &resolvedResource, HTTPNodeType nodeType); /** Add a middleware function to the end of the middleware function chain. See HTTPSMiddlewareFunction.hpp for details. */ void addMiddleware(const HTTPSMiddlewareFunction * mwFunction); /** Remove a specific function from the middleware function chain. */ void removeMiddleware(const HTTPSMiddlewareFunction * mwFunction); /** Get the current middleware chain with a resource function at the end */ const std::vector getMiddleware(); private: // This vector holds all nodes (with callbacks) that are registered std::vector * _nodes; HTTPNode * _defaultNode; // Middleware functions, if any are registered. Will be called in order of the vector. std::vector _middleware; }; } /* namespace httpsserver */ #endif /* SRC_RESOURCERESOLVER_HPP_ */
X Tutup