ffead.server.doc
HttpRequest.h
1 /*
2  Copyright 2009-2012, Sumeet Chhetri
3 
4  Licensed under the Apache License, Version 2.0 (the "License");
5  you may not use this file except in compliance with the License.
6  You may obtain a copy of the License at
7 
8  http://www.apache.org/licenses/LICENSE-2.0
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15 */
16 /*
17  * HttpRequest.h
18  *
19  * Created on: Aug 10, 2009
20  * Author: sumeet
21  */
22 
23 #include "map"
24 #include "HttpSession.h"
25 #include "vector"
26 #include "sstream"
27 #include "fstream"
28 #include "StringUtil.h"
29 
30 #include "CastUtil.h"
31 #include "stdio.h"
32 #include <openssl/ssl.h>
33 #include "CryptoHandler.h"
34 #include "Logger.h"
35 
36 typedef vector<string> strVec;
37 #ifndef HTTPREQUEST_H_
38 #define HTTPREQUEST_H_
39 using namespace std;
40 typedef map<string, string> RMap;
41 
42 
43 class FormData
44 {
45 public:
46  string type;
47  string value;
48  string fileName;
49  int length;
50  string tmpFileName;
51 };
52 typedef map<string, FormData> FMap;
53 class HttpRequest {
54  Logger logger;
55  //friend class HttpSession;
56  string host;
57  string url;
58  string cntxt_root;
59  string cntxt_name;
60  string httpVersion;
61  string method;
62  string user_agent;
63  string accept;
64  string accept_lang;
65  string accept_encod;
66  string accept_chars;
67  string keep_alive;
68  string connection;
69  string cache_ctrl;
70  string content;
71  string content_type;
72  string content_boundary;
73  string content_len;
74  string referer;
75  string pragma;
76  string file;
77  Map attributes;
78  RMap requestParams;
79  FMap requestParamsF;
80  RMap queryParams;
81  HttpSession session;
82  strVec localeInfo;
83  string actUrl;
84  string sessionID;
85  bool cookie;
86  map<string,string> cookieattrs;
87  map<string,string> authinfo;
88  map<int,string> reqorderinf;
89  map<int,string> authorderinf;
90  map<string,string> xtraHeaders;
91  void unbase64(string);
92  void getOauthParams(string);
93 public:
94  HttpRequest();
95  HttpRequest(strVec,string);
96  virtual ~HttpRequest();
97  Map getAttributes() const;
98  void setAttributes(Map attributes);
99  string getAttribute(string key);
100  void setAttribute(string key,string value);
101  void setSession(HttpSession session);
102  HttpSession* getSession();
103  string getMethod() const;
104  void setMethod(string method);
105  string getUser_agent() const;
106  void setUser_agent(string user_agent);
107  string getAccept() const;
108  void setAccept(string accept);
109  string getAccept_lang() const;
110  void setAccept_lang(string accept_lang);
111  string getAccept_encod() const;
112  void setAccept_encod(string accept_encod);
113  string getAccept_chars() const;
114  void setAccept_chars(string accept_chars);
115  string getKeep_alive() const;
116  void setKeep_alive(string keep_alive);
117  string getConnection() const;
118  void setConnection(string connection);
119  string getCache_ctrl() const;
120  void setCache_ctrl(string cache_ctrl);
121  string getHost() const;
122  void setHost(string host);
123  void setUrl(string);
124  string getUrl();
125  void setHttpVersion(string);
126  string getHttpVersion();
127  string getContent_type() const;
128  void setContent_type(string);
129  string getContent_boundary() const;
130  void setContent_boundary(string);
131  string getContent_len() const;
132  void setContent_len(string);
133  string getContent() const;
134  void setContent(string);
135  string getReferer() const;
136  void setReferer(string);
137  string getPragma() const;
138  void setPragma(string);
139  RMap getRequestParams() const;
140  void setRequestParams(RMap);
141  void setRequestParam(string,string);
142  void setRequestParamF(string,FormData);
143  string getRequestParam(string);
144  string getRequestParamType(string key);
145  string getCntxt_root() const;
146  void setCntxt_root(string);
147  string getDefaultLocale();
148  string getCntxt_name() const;
149  void setCntxt_name(string);
150  string getFile() const;
151  void setFile(string);
152  string getActUrl() const;
153  void setActUrl(string);
154  string getSessionID() const{return sessionID;}
155  void setSessionID(string sessionID){this->sessionID = sessionID;}
156  map<string,string> getAuthinfo() const;
157  void setAuthinfo(map<string,string>);
158  string buildRequest(const char* key,const char* value);
159  string toString();
160  string toPHPVariablesString(string);
161  string toPerlVariablesString();
162  string toRubyVariablesString();
163  string toPythonVariablesString();
164  string toLuaVariablesString();
165  string toNodejsVariablesString();
166  RMap getQueryParams() const {
167  return queryParams;
168  }
169 
170  void setQueryParams(RMap queryParams) {
171  this->queryParams = queryParams;
172  }
173  void setQueryParam(string name,string value){this->queryParams[name] = value;}
174  string getQueryParam(string key)
175  {
176  if(this->queryParams.find(key)!=this->queryParams.end())
177  return this->queryParams[key];
178  return "";
179  }
180  RMap getAllParams();
181  bool hasCookie() const{return this->cookie;}
182  map<int,string> getAuthOrderinfo() const{return authorderinf;}
183  map<int,string> getReqOrderinfo() const{return reqorderinf;}
184  map<string,string> getCookieInfo() const{return cookieattrs;}
185  string getAuthOrderinfoAttribute(int key)
186  {
187  if(authorderinf.find(key)!=authorderinf.end())
188  return authorderinf[key];
189  else return "";
190  }
191  string getReqOrderinfoAttribute(int key)
192  {
193  if(reqorderinf.find(key)!=reqorderinf.end())
194  return reqorderinf[key];
195  else return "";
196  }
197  string getCookieInfoAttribute(string key)
198  {
199  if(cookieattrs.find(key)!=cookieattrs.end())
200  return cookieattrs[key];
201  else return "";
202  }
203  string getXtraHeader(string key)
204  {
205  if(this->xtraHeaders.find(key)!=this->xtraHeaders.end())
206  return this->xtraHeaders[key];
207  return "";
208  }
209 };
210 
211 #endif /* HTTPREQUEST_H_ */