-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRequest.hpp
More file actions
48 lines (42 loc) · 1.23 KB
/
Request.hpp
File metadata and controls
48 lines (42 loc) · 1.23 KB
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
#pragma once
#include "MyServer.hpp"
#include "Reader.hpp"
#include "RequestURI.hpp"
#include <string>
#include <map>
#include <iostream>
#include <vector>
using namespace std;
class Request
{
private:
string inAddr;
string method;
RequestURI uri;
string root;
string httpVersion;
map<string, vector<string>> headers;
string body;
void parseHeader(const string &s);
static map<string, void (Request::*)(const string &name, const string &val)> parsers;
public:
Request(Reader &reader);
~Request(){};
const string &getMethod() const;
const RequestURI &getUri() const;
const string &getHttpVersion() const;
const map<string, vector<string>> &getHeaders() const;
const string &getBody() const;
const string &getRoot() const;
const string &getInAddr() const;
void parseValList(const string &name, const string &val);
void parseValSingle(const string &name, const string &val);
void setUri(const RequestURI &n);
void setInAddr(const string &in_addr);
void setRoot(const string &root);
struct Exception: public MyServer::Exception
{
Exception(const string &msg) : MyServer::Exception(msg){}
};
};
ostream &operator<<(ostream &out, const Request &r);