From 565110e223c3bdab55ba9a58fe791dac11eef7f8 Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Sun, 21 Feb 2021 13:08:35 -0800 Subject: [PATCH] onedrive: Fix json response parsing Discontinue use of incorrect and obsolete QJsonDocument::fromBinaryData method. Utilize common InternetService::ParseJsonReply instead. --- src/internet/skydrive/skydriveservice.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/internet/skydrive/skydriveservice.cpp b/src/internet/skydrive/skydriveservice.cpp index 5dfc12a9d..4b218e3a8 100644 --- a/src/internet/skydrive/skydriveservice.cpp +++ b/src/internet/skydrive/skydriveservice.cpp @@ -110,8 +110,11 @@ void SkydriveService::AddAuthorizationHeader(QNetworkRequest* request) { void SkydriveService::FetchUserInfoFinished(QNetworkReply* reply) { reply->deleteLater(); - QJsonObject json_response = - QJsonDocument::fromBinaryData(reply->readAll()).object(); + + QJsonDocument document = ParseJsonReply(reply); + if (document.isNull()) return; + + QJsonObject json_response = document.object(); QString name = json_response["name"].toString(); if (!name.isEmpty()) { @@ -137,8 +140,11 @@ void SkydriveService::ListFiles(const QString& folder) { void SkydriveService::ListFilesFinished(QNetworkReply* reply) { reply->deleteLater(); - QJsonObject json_response = - QJsonDocument::fromBinaryData(reply->readAll()).object(); + + QJsonDocument document = ParseJsonReply(reply); + if (document.isNull()) return; + + QJsonObject json_response = document.object(); QJsonArray files = json_response["data"].toArray(); for (const QJsonValue& f : files) { @@ -179,8 +185,11 @@ QUrl SkydriveService::GetStreamingUrlFromSongId(const QString& file_id) { std::unique_ptr reply(network_->get(request)); WaitForSignal(reply.get(), SIGNAL(finished())); - QJsonObject json_response = - QJsonDocument::fromBinaryData(reply.get()->readAll()).object(); + QJsonDocument document = ParseJsonReply(reply.get()); + if (document.isNull()) return QUrl(); + + QJsonObject json_response = document.object(); + return QUrl(json_response["source"].toString()); }