HttpResourcePlugin.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  *
8  * @author: 2021 - Slavey Karadzhov <slaff@attachix.com>
9  *
10  ****/
11 
12 #pragma once
13 
14 #include <Data/LinkedObjectList.h>
15 #include "../HttpRequest.h"
16 #include "../HttpResponse.h"
17 
19 
23 class HttpResourcePlugin : public LinkedObjectTemplate<HttpResourcePlugin>
24 {
25 public:
27 
28 protected:
29  friend class HttpResource;
30 
31  virtual int getPriority() const = 0;
32 
33  virtual bool urlComplete(HttpServerConnection& connection, HttpRequest& request, HttpResponse& response)
34  {
35  return true;
36  }
37 
38  virtual bool headersComplete(HttpServerConnection& connection, HttpRequest& request, HttpResponse& response)
39  {
40  return true;
41  }
42 
43  virtual bool upgradeReceived(HttpServerConnection& connection, HttpRequest&, char* data, size_t length)
44  {
45  return true;
46  }
47 
48  virtual bool bodyReceived(HttpServerConnection& connection, HttpRequest& request, char*& data, size_t& length)
49  {
50  return true;
51  }
52 
53  virtual bool requestComplete(HttpServerConnection& connection, HttpRequest& request, HttpResponse& response)
54  {
55  return true;
56  }
57 };
58 
63 {
64 private:
65  int getPriority() const override
66  {
67  return 1;
68  }
69 };
70 
75 {
76 private:
77  int getPriority() const override
78  {
79  return -1;
80  }
81 };
Filter plugins run after the resource is invoked.
Definition: HttpResourcePlugin.h:75
Filter plugins run before the resource is invoked.
Definition: HttpResourcePlugin.h:63
Encapsulates an incoming or outgoing request.
Definition: HttpRequest.h:37
Base plugin class. Implementations should be based on either HttpPreFilter or HttpPostFilter
Definition: HttpResourcePlugin.h:24
virtual bool requestComplete(HttpServerConnection &connection, HttpRequest &request, HttpResponse &response)
Definition: HttpResourcePlugin.h:53
virtual bool urlComplete(HttpServerConnection &connection, HttpRequest &request, HttpResponse &response)
Definition: HttpResourcePlugin.h:33
virtual bool bodyReceived(HttpServerConnection &connection, HttpRequest &request, char *&data, size_t &length)
Definition: HttpResourcePlugin.h:48
virtual bool headersComplete(HttpServerConnection &connection, HttpRequest &request, HttpResponse &response)
Definition: HttpResourcePlugin.h:38
virtual bool upgradeReceived(HttpServerConnection &connection, HttpRequest &, char *data, size_t length)
Definition: HttpResourcePlugin.h:43
virtual int getPriority() const =0
Instances of this class are registered with an HttpServer for a specific URL.
Definition: HttpResource.h:34
Represents either an incoming or outgoing response to a HTTP request.
Definition: HttpResponse.h:26
Definition: HttpServerConnection.h:34
Base class template for linked items with type casting.
Definition: LinkedObject.h:62