Simplified Server::parse_request
This commit is contained in:
parent
b1200958cc
commit
0d8052dcb9
2 changed files with 11 additions and 11 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue