@@ -73,97 +73,97 @@ void UpdateChecker::onReqFinished(QNetwo
emit checkFailed(QString("JSon parsing error: ") + error.errorString());
}
else
{
QList<FileInfo> files;
if (!parseData(data, files))
// TODO: emit detailed data contents for logging
emit checkFailed("Data parsing error.");
FileInfo updateFile;
if (findUpdate(files, updateFile))
emit checkFinished(
true, updateFile.version.toString(), updateFile.link);
emit checkFinished(false, "", "");
reply->deleteLater();
activeReply = NULL;
bool UpdateChecker::parseData(const QJsonDocument& data, QList<FileInfo>& files) const
/* Data is expected to be in this form:
"values": [
"name": "serialplot-0.9.1-x86_64.AppImage",
"links": {
"self": {
"href": "https://api.bitbucket.org/2.0/repositories/hyOzd/serialplot/downloads/serialplot-0.9.1-x86_64.AppImage"
}, ... ]
*/
if (!data.isObject()) return false;
auto values = data.object()["values"];
auto values = data.object().value("values");
if (values == QJsonValue::Undefined || !values.isArray()) return false;
for (auto value : values.toArray())
if (!value.isObject()) return false;
auto name = value.toObject().value("name");
if (name.isUndefined() || !name.isString())
return false;
auto links = value.toObject().value("links");
if (links.isUndefined() || !links.isObject())
auto self = links.toObject().value("self");
if (self.isUndefined() || !self.isObject())
auto href = self.toObject().value("href");
if (href.isUndefined() || !href.isString())
FileInfo finfo;
finfo.name = name.toString();
finfo.link = href.toString();
finfo.hasVersion = VersionNumber::extract(name.toString(), finfo.version);
if (finfo.name.contains("amd64") ||
finfo.name.contains("x86_64") ||
finfo.name.contains("win64"))
finfo.arch = FileArch::amd64;
else if (finfo.name.contains("win32") ||
finfo.name.contains("i386"))
finfo.arch = FileArch::_i386;
finfo.arch = FileArch::unknown;
files += finfo;
return true;
Status change: