ESA JPIP server  0.1
request.h
Go to the documentation of this file.
1 #ifndef _HTTP_REQUEST_H_
2 #define _HTTP_REQUEST_H_
3 
4 
5 #include <map>
6 #include <string>
7 #include <vector>
8 #include <sstream>
9 #include <iostream>
10 #include <stdlib.h>
11 #include "header.h"
12 #include "protocol.h"
13 
14 
15 namespace http
16 {
17 
18  using namespace std;
19 
20 
27  class Request
28  {
29  public:
33  enum Type {
34  GET,
36  UNKNOWN
37  };
38 
40  string object;
42 
46  map<string, string> parameters;
47 
54  Request(Type type = Request::GET, const string& uri = "/", const Protocol& protocol = Protocol(1, 1))
55  {
56  this->type = type;
57  this->protocol = protocol;
58 
59  ParseURI(uri);
60  }
61 
67  bool Parse(const string& line);
68 
73  void ParseURI(const string& uri)
74  {
75  istringstream uri_str(uri);
76  getline(uri_str, object, '?');
77  ParseParameters(uri_str);
78  }
79 
84  virtual void ParseParameters(istream& stream);
85 
92  virtual void ParseParameter(istream& stream, const string& param, string& value);
93 
94  friend istream& operator >> (istream &in, Request &request);
95  friend ostream& operator << (ostream& out, const Request& request);
96  };
97 
98 }
99 
100 
101 #endif /* _REQUEST_H_ */
Type type
Request type (GET or POST)
Definition: request.h:39
map< string, string > parameters
Map with all the parameters when using the CGI form.
Definition: request.h:46
void ParseURI(const string &uri)
Parses a URI from a string.
Definition: request.h:73
Class used to identify the HTTP protocol.
Definition: protocol.h:20
string object
Object associated to the request.
Definition: request.h:40
Definition: request.h:35
Type
Request type enumeration.
Definition: request.h:33
Protocol protocol
Protocol version used.
Definition: request.h:41
Request(Type type=Request::GET, const string &uri="/", const Protocol &protocol=Protocol(1, 1))
Initializes the request.
Definition: request.h:54
Class used to identify a HTTP request (GET or POST).
Definition: request.h:27
Definition: request.h:34
istream & operator>>(istream &in, Request &request)
Definition: request.cc:51
ostream & operator<<(ostream &out, const Request &request)
Definition: request.cc:65