}
HTTPRequest::HTTPRequest(const string& uri, const HTTPMethod& method,
- const string& query, const string& version):
- HTTPMessage(version), method(method), uri(uri), query(query) {
+ const string& query, const string& body, const string& version):
+ HTTPMessage(body, version), method(method), uri(uri), query(query) {
#ifdef DEBUG
cerr << __FILE__ << ": uri = " << uri << " | "
- << "method = " << ((method == GET) ? "GET" : "POST") << " | "
+ << "method = " << method_str() << " | "
<< "query = " << query << " | "
+ << "body.length = " << body.length() << " | "
<< "version = " << version << endl;
#endif // DEBUG
}
+string HTTPRequest::method_str(void) const {
+ switch (method) {
+ case POST:
+ return "POST";
+ case GET:
+ default:
+ return "GET";
+ }
+}
+
istream& operator>>(istream& is, HTTPRequest& req)
throw(HTTPError, ios::failure) {
#ifdef DEBUG
#ifdef DEBUG
cerr << __FILE__ << ": operator<<()" << endl;
#endif // DEBUG
- os << req.method << " " << req.uri;
+ os << req.method_str() << " " << req.uri;
if (req.query.length()) {
os << "?" << req.query;
}
- // TODO ver que este bien el \n/r
- os << " HTTP/" << req.version << "\n\r" << static_cast<const HTTPMessage&>(req);
+ os << " HTTP/" << req.version << "\r\n"
+ << static_cast<const HTTPMessage&>(req);
return os;
}