Implemented default URL for missing images (#2)
This commit is contained in:
parent
a7d196ec38
commit
d9fab6928b
46
src/http.cpp
46
src/http.cpp
@ -34,6 +34,7 @@ const Request http::parse_request(const string &request)
|
||||
}
|
||||
|
||||
uint16_t size = 80;
|
||||
string fallback;
|
||||
string digest = request.substr(8);
|
||||
std::transform(digest.begin(), digest.end(), digest.begin(), ::tolower);
|
||||
std::size_t pos_digest = digest.find('?');
|
||||
@ -43,30 +44,47 @@ const Request http::parse_request(const string &request)
|
||||
digest = digest.substr(0, pos_digest);
|
||||
|
||||
string answer;
|
||||
answer = get_parameter(request, "s");
|
||||
if (!answer.empty())
|
||||
{
|
||||
size = static_cast<uint16_t>(std::stoul(answer));
|
||||
}
|
||||
else
|
||||
{
|
||||
answer = get_parameter(request, "size");
|
||||
answer = get_parameter(request, "s");
|
||||
if (!answer.empty())
|
||||
{
|
||||
size = static_cast<uint16_t>(std::stoul(answer));
|
||||
}
|
||||
else
|
||||
{
|
||||
answer = get_parameter(request, "size");
|
||||
if (!answer.empty())
|
||||
{
|
||||
size = static_cast<uint16_t>(std::stoul(answer));
|
||||
}
|
||||
}
|
||||
if (size > 512)
|
||||
{
|
||||
size = 512;
|
||||
}
|
||||
if (size < 1)
|
||||
{
|
||||
size = 1;
|
||||
}
|
||||
}
|
||||
if (size > 512)
|
||||
{
|
||||
size = 512;
|
||||
}
|
||||
if (size < 1)
|
||||
{
|
||||
size = 1;
|
||||
answer = get_parameter(request, "d");
|
||||
if (!answer.empty())
|
||||
{
|
||||
fallback = answer;
|
||||
}
|
||||
else
|
||||
{
|
||||
answer = get_parameter(request, "default");
|
||||
if (!answer.empty())
|
||||
{
|
||||
fallback = answer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return { digest, size };
|
||||
return { digest, size, fallback };
|
||||
}
|
||||
|
||||
const string http::get_parameter(const string &request, const string ¶meter)
|
||||
|
@ -62,8 +62,19 @@ int main()
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "Status: 404 Not Found\n\n";
|
||||
cerr << "Error " << std::to_string(answer.error) << ": Could not open file.\n";
|
||||
if (avatar.fallback.empty())
|
||||
{
|
||||
cout << "Status: 404 Not Found\n\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (avatar.fallback.substr(0, 4) == "http")
|
||||
{
|
||||
cout << "Status: 307 Temporary Redirect\n";
|
||||
cout << "Location: " << avatar.fallback << endl << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -49,6 +49,7 @@ namespace http // http.cpp
|
||||
{
|
||||
const string digest;
|
||||
uint16_t size;
|
||||
const string fallback;
|
||||
};
|
||||
|
||||
const Request parse_request(const string &request);
|
||||
|
Loading…
x
Reference in New Issue
Block a user