Simplified Server::parse_request

This commit is contained in:
eidheim 2016-11-23 09:54:22 +01:00
commit 0d8052dcb9
2 changed files with 11 additions and 11 deletions

View file

@ -255,7 +255,7 @@ namespace SimpleWeb {
//streambuf (maybe some bytes of the content) is appended to in the async_read-function below (for retrieving content). //streambuf (maybe some bytes of the content) is appended to in the async_read-function below (for retrieving content).
size_t num_additional_bytes=request->streambuf.size()-bytes_transferred; size_t num_additional_bytes=request->streambuf.size()-bytes_transferred;
if(!parse_request(request, request->content)) if(!parse_request(request))
return; return;
//If content, read that as well //If content, read that as well
@ -292,9 +292,9 @@ namespace SimpleWeb {
}); });
} }
bool parse_request(const std::shared_ptr<Request> &request, std::istream& stream) const { bool parse_request(const std::shared_ptr<Request> &request) const {
std::string line; std::string line;
getline(stream, line); getline(request->content, line);
size_t method_end; size_t method_end;
if((method_end=line.find(' '))!=std::string::npos) { if((method_end=line.find(' '))!=std::string::npos) {
size_t path_end; size_t path_end;
@ -311,7 +311,7 @@ namespace SimpleWeb {
else else
return false; return false;
getline(stream, line); getline(request->content, line);
size_t param_end; size_t param_end;
while((param_end=line.find(':'))!=std::string::npos) { while((param_end=line.find(':'))!=std::string::npos) {
size_t value_start=param_end+1; size_t value_start=param_end+1;
@ -322,7 +322,7 @@ namespace SimpleWeb {
request->header.insert(std::make_pair(line.substr(0, param_end), line.substr(value_start, line.size()-value_start-1))); request->header.insert(std::make_pair(line.substr(0, param_end), line.substr(value_start, line.size()-value_start-1)));
} }
getline(stream, line); getline(request->content, line);
} }
} }
else else

View file

@ -15,13 +15,13 @@ public:
bool parse_request_test() { bool parse_request_test() {
std::shared_ptr<Request> request(new Request()); std::shared_ptr<Request> request(new Request());
stringstream ss; std::ostream stream(&request->content.streambuf);
ss << "GET /test/ HTTP/1.1\r\n"; stream << "GET /test/ HTTP/1.1\r\n";
ss << "TestHeader: test\r\n"; stream << "TestHeader: test\r\n";
ss << "TestHeader2:test2\r\n"; stream << "TestHeader2:test2\r\n";
ss << "\r\n"; stream << "\r\n";
if(!parse_request(request, ss)) if(!parse_request(request))
return 0; return 0;
if(request->method!="GET") if(request->method!="GET")