Safeheron-SGX-Native-Development-Framework v1.2.0
Loading...
Searching...
No Matches
ssgx_http_t_filter.h
Go to the documentation of this file.
1#ifndef SSGXLIB_SSGX_HTTP_T_FILTER_H
2#define SSGXLIB_SSGX_HTTP_T_FILTER_H
3
4#include <functional>
5#include <mutex>
6#include <string>
7#include <unordered_map>
8#include <vector>
9
10#include "ssgx_http_t_structs.h"
11
12namespace ssgx {
13namespace http_t {
20class Filter {
21 public:
32 virtual bool Before(Request& request, Response& response) {
33 return true;
34 }
35
45 virtual void After(Request& request, Response& response) {
46 }
47
51 virtual ~Filter() = default;
52};
53
62 public:
71 void AddFilter(std::unique_ptr<Filter>&& filter) {
72 filters_.emplace_back(std::move(filter));
73 }
84 Response Execute(Request& request, const std::function<void(Request&, Response&)>& handler) {
85 Response response;
86
87 for (auto& filter : filters_) {
88 if (!filter->Before(request, response)) {
89 return response;
90 }
91 }
92
93 handler(request, response);
94
95 for (auto& filter : filters_) {
96 filter->After(request, response);
97 }
98
99 return response;
100 }
101
102 private:
103 std::vector<std::unique_ptr<Filter>> filters_;
104};
105
106} // namespace http_t
107} // namespace ssgx
108
109#endif // SSGXLIB_SSGX_HTTP_T_FILTER_H
A class to manage a chain of filters for request processing.
Definition ssgx_http_t_filter.h:61
void AddFilter(std::unique_ptr< Filter > &&filter)
Add a filter to the filter chain.
Definition ssgx_http_t_filter.h:71
Response Execute(Request &request, const std::function< void(Request &, Response &)> &handler)
Execute the filter chain for a request.
Definition ssgx_http_t_filter.h:84
Abstract base class for HTTP request filters.
Definition ssgx_http_t_filter.h:20
virtual ~Filter()=default
Destructor.
virtual void After(Request &request, Response &response)
Perform filtering after the request handler is executed.
Definition ssgx_http_t_filter.h:45
virtual bool Before(Request &request, Response &response)
Perform filtering before the request handler is executed.
Definition ssgx_http_t_filter.h:32
HTTP request class to represent an incoming HTTP request.
Definition ssgx_http_t_structs.h:109
HTTP response class to represent an outgoing HTTP response.
Definition ssgx_http_t_structs.h:424
Definition ssgx_attestation_t.h:6