Added HttpHeader::parse
This commit is contained in:
parent
f7ddeeda82
commit
9e5f86edcd
1 changed files with 23 additions and 26 deletions
49
utility.hpp
49
utility.hpp
|
|
@ -134,6 +134,27 @@ namespace SimpleWeb {
|
|||
}
|
||||
};
|
||||
|
||||
class HttpHeader {
|
||||
public:
|
||||
/// Parse header fields
|
||||
static void parse(std::istream &stream, CaseInsensitiveMultimap &header) {
|
||||
std::string line;
|
||||
getline(stream, line);
|
||||
size_t param_end;
|
||||
while((param_end = line.find(':')) != std::string::npos) {
|
||||
size_t value_start = param_end + 1;
|
||||
if(value_start < line.size()) {
|
||||
if(line[value_start] == ' ')
|
||||
value_start++;
|
||||
if(value_start < line.size())
|
||||
header.emplace(line.substr(0, param_end), line.substr(value_start, line.size() - value_start - 1));
|
||||
}
|
||||
|
||||
getline(stream, line);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class RequestMessage {
|
||||
public:
|
||||
/// Parse request line and header fields
|
||||
|
|
@ -172,19 +193,7 @@ namespace SimpleWeb {
|
|||
else
|
||||
return false;
|
||||
|
||||
getline(stream, line);
|
||||
size_t param_end;
|
||||
while((param_end = line.find(':')) != std::string::npos) {
|
||||
size_t value_start = param_end + 1;
|
||||
if(value_start < line.size()) {
|
||||
if(line[value_start] == ' ')
|
||||
value_start++;
|
||||
if(value_start < line.size())
|
||||
header.emplace(line.substr(0, param_end), line.substr(value_start, line.size() - value_start - 1));
|
||||
}
|
||||
|
||||
getline(stream, line);
|
||||
}
|
||||
HttpHeader::parse(stream, header);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
|
@ -213,19 +222,7 @@ namespace SimpleWeb {
|
|||
else
|
||||
return false;
|
||||
|
||||
getline(stream, line);
|
||||
size_t param_end;
|
||||
while((param_end = line.find(':')) != std::string::npos) {
|
||||
size_t value_start = param_end + 1;
|
||||
if((value_start) < line.size()) {
|
||||
if(line[value_start] == ' ')
|
||||
value_start++;
|
||||
if(value_start < line.size())
|
||||
header.insert(std::make_pair(line.substr(0, param_end), line.substr(value_start, line.size() - value_start - 1)));
|
||||
}
|
||||
|
||||
getline(stream, line);
|
||||
}
|
||||
HttpHeader::parse(stream, header);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue