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 {
|
class RequestMessage {
|
||||||
public:
|
public:
|
||||||
/// Parse request line and header fields
|
/// Parse request line and header fields
|
||||||
|
|
@ -172,19 +193,7 @@ namespace SimpleWeb {
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
getline(stream, line);
|
HttpHeader::parse(stream, header);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -213,19 +222,7 @@ namespace SimpleWeb {
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
getline(stream, line);
|
HttpHeader::parse(stream, header);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue