81 lines
1.2 KiB
C++
81 lines
1.2 KiB
C++
|
#include "HttpHeader.h"
|
||
|
#include "StringUtils.h"
|
||
|
|
||
|
|
||
|
void HttpHeader::parse(const std::vector<std::string >& message)
|
||
|
{
|
||
|
std::string tag;
|
||
|
std::string value;
|
||
|
bool foundDelimiter{false};
|
||
|
for (const auto& line : message)
|
||
|
{
|
||
|
for(std::size_t idx = 0; idx< line.size(); idx++)
|
||
|
{
|
||
|
const auto c = line[idx];
|
||
|
if (c == StringUtils::COLON)
|
||
|
{
|
||
|
foundDelimiter = true;
|
||
|
}
|
||
|
else if(foundDelimiter)
|
||
|
{
|
||
|
value.push_back(c);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
tag.push_back(c);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (tag.empty() || value.empty())
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (tag == "Host")
|
||
|
{
|
||
|
mHost = value;
|
||
|
}
|
||
|
else if (tag == "User-Agent")
|
||
|
{
|
||
|
mUserAgent = value;
|
||
|
}
|
||
|
else if (tag == "Accept")
|
||
|
{
|
||
|
mAccept = value;
|
||
|
}
|
||
|
else if (tag == "Accept-Language")
|
||
|
{
|
||
|
mAcceptLanguage = value;
|
||
|
}
|
||
|
else if (tag == "Accept-Encoding")
|
||
|
{
|
||
|
mAcceptEncoding = value;
|
||
|
}
|
||
|
else if (tag == "Connection")
|
||
|
{
|
||
|
mConnection = value;
|
||
|
}
|
||
|
else if (tag == "Referer")
|
||
|
{
|
||
|
mReferer = value;
|
||
|
}
|
||
|
else if (tag == "Sec-Fetch-Dest")
|
||
|
{
|
||
|
mSecFetchDest = value;
|
||
|
}
|
||
|
else if (tag == "Sec-Fetch-Mode")
|
||
|
{
|
||
|
mSecFetchMode = value;
|
||
|
}
|
||
|
else if (tag == "Sec-Fetch-Site")
|
||
|
{
|
||
|
mSecFetchSite = value;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
mOtherFields[tag] = value;
|
||
|
}
|
||
|
|
||
|
}
|