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 
34  {
35  return true;
36  }
37 
39  {
40  return true;
41  }
42 
43  virtual bool upgradeReceived(HttpServerConnection&, HttpRequest&, [[maybe_unused]] char* data,
44  [[maybe_unused]] size_t length)
45  {
46  return true;
47  }
48 
49  virtual bool bodyReceived(HttpServerConnection&, HttpRequest&, [[maybe_unused]] char*& data,
50  [[maybe_unused]] size_t& length)
51  {
52  return true;
53  }
54 
56  {
57  return true;
58  }
59 };
60 
65 {
66 private:
67  int getPriority() const override
68  {
69  return 1;
70  }
71 };
72 
77 {
78 private:
79  int getPriority() const override
80  {
81  return -1;
82  }
83 };
Filter plugins run after the resource is invoked.
Definition: HttpResourcePlugin.h:77
Filter plugins run before the resource is invoked.
Definition: HttpResourcePlugin.h:65
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 &, HttpRequest &, HttpResponse &)
Definition: HttpResourcePlugin.h:55
virtual bool headersComplete(HttpServerConnection &, HttpRequest &, HttpResponse &)
Definition: HttpResourcePlugin.h:38
virtual bool upgradeReceived(HttpServerConnection &, HttpRequest &, [[maybe_unused]] char *data, [[maybe_unused]] size_t length)
Definition: HttpResourcePlugin.h:43
virtual bool urlComplete(HttpServerConnection &, HttpRequest &, HttpResponse &)
Definition: HttpResourcePlugin.h:33
virtual int getPriority() const =0
virtual bool bodyReceived(HttpServerConnection &, HttpRequest &, [[maybe_unused]] char *&data, [[maybe_unused]] size_t &length)
Definition: HttpResourcePlugin.h:49
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:60