blob: 37f2c98fb932843f420cbd6a7c737fd510d5760e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#ifndef CGI_HH
#define CGI_HH
#include <functional>
#include <map>
#include <string>
#include <vector>
namespace stuff {
class CGI {
public:
enum request_type {
GET,
HEAD,
POST,
PUT,
TRACE,
UNKNOWN,
};
virtual void post_data(std::vector<char>* data) = 0;
// Return true if post data is multipart, false otherwise
virtual bool post_data(std::map<std::string,std::string>* data) = 0;
virtual void query_data(std::map<std::string,std::string>* data) = 0;
// Will first try post_data and fallback to query_data
void get_data(std::map<std::string,std::string>* data);
virtual std::string request_path() = 0;
virtual std::string request_uri() = 0;
virtual std::string remote_addr() = 0;
virtual request_type request_type() = 0;
virtual std::string content_type() = 0;
virtual std::string http_auth() = 0;
static int run(std::function<bool(CGI*)> handle_request);
protected:
CGI() {}
virtual ~CGI() {}
CGI(const CGI&) = delete;
CGI& operator=(const CGI&) = delete;
};
} // namespace stuff
#endif /* CGI_HH */
|