Only attempt to read thumbnails when we get a 200 response code.

We would have been able to keep doing this if the Network Request code
followed redirects - however, it doesn't, so this is the best we can do.
We also don't have header support in Network Result, so we can't
validate that the response we got is actually an image.

Fixes #1972
This commit is contained in:
Rasmus Karlsson 2020-09-26 09:30:50 +02:00
parent 8123a47898
commit 4f35842473

View file

@ -594,6 +594,7 @@ void SplitHeader::updateChannelText()
if (streamStatus->live)
{
this->isLive_ = true;
// XXX: This URL format can be figured out from the Helix Get Streams API which we parse in TwitchChannel::parseLiveStatus
QString url = "https://static-cdn.jtvnw.net/"
"previews-ttv/live_user_" +
channel->getName().toLower();
@ -617,9 +618,17 @@ void SplitHeader::updateChannelText()
{
NetworkRequest(url, NetworkRequestType::Get)
.onSuccess([this](auto result) -> Outcome {
this->thumbnail_ =
QString::fromLatin1(result.getData().toBase64());
updateChannelText();
// NOTE: We do not follow the redirects, so we need to make sure we only treat code 200 as a valid image
if (result.status() == 200)
{
this->thumbnail_ = QString::fromLatin1(
result.getData().toBase64());
}
else
{
this->thumbnail_.clear();
}
this->updateChannelText();
return Success;
})
.execute();