diff --git a/src/covermanager/tidalcoverprovider.cpp b/src/covermanager/tidalcoverprovider.cpp index 5976c343..6d2f907b 100644 --- a/src/covermanager/tidalcoverprovider.cpp +++ b/src/covermanager/tidalcoverprovider.cpp @@ -85,11 +85,9 @@ QNetworkReply *TidalCoverProvider::CreateRequest(const QString &ressource_name, << Param("sessionId", service_->session_id()) << Param("countryCode", service_->country_code()); - QStringList query_items; QUrlQuery url_query; for (const Param& param : parameters) { EncodedParam encoded_param(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); - query_items << QString(encoded_param.first + "=" + encoded_param.second); url_query.addQueryItem(encoded_param.first, encoded_param.second); } diff --git a/src/tidal/tidalbaserequest.cpp b/src/tidal/tidalbaserequest.cpp index 918a0c0a..b18df8d0 100644 --- a/src/tidal/tidalbaserequest.cpp +++ b/src/tidal/tidalbaserequest.cpp @@ -63,11 +63,9 @@ QNetworkReply *TidalBaseRequest::CreateRequest(const QString &ressource_name, co ParamList params = ParamList() << params_provided << Param("countryCode", country_code()); - QStringList query_items; QUrlQuery url_query; for (const Param& param : params) { EncodedParam encoded_param(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); - query_items << QString(encoded_param.first + "=" + encoded_param.second); url_query.addQueryItem(encoded_param.first, encoded_param.second); } @@ -97,7 +95,13 @@ QByteArray TidalBaseRequest::GetReplyData(QNetworkReply *reply, QString &error, QByteArray data; if (reply->error() == QNetworkReply::NoError) { - data = reply->readAll(); + int http_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + if (http_code == 200) { + data = reply->readAll(); + } + else { + error = Error(QString("Received HTTP code %1").arg(http_code)); + } } else { if (reply->error() < 200) { diff --git a/src/tidal/tidalfavoriterequest.cpp b/src/tidal/tidalfavoriterequest.cpp index dd2ffa69..6e5041e6 100644 --- a/src/tidal/tidalfavoriterequest.cpp +++ b/src/tidal/tidalfavoriterequest.cpp @@ -132,11 +132,9 @@ void TidalFavoriteRequest::AddFavorites(const FavoriteType type, const SongList ParamList params = ParamList() << Param("countryCode", country_code()) << Param(text, ids); - QStringList query_items; QUrlQuery url_query; for (const Param& param : params) { EncodedParam encoded_param(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); - query_items << QString(encoded_param.first + "=" + encoded_param.second); url_query.addQueryItem(encoded_param.first, encoded_param.second); } @@ -236,11 +234,9 @@ void TidalFavoriteRequest::RemoveFavorites(const FavoriteType type, const int id ParamList params = ParamList() << Param("countryCode", country_code()); - QStringList query_items; QUrlQuery url_query; for (const Param& param : params) { EncodedParam encoded_param(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); - query_items << QString(encoded_param.first + "=" + encoded_param.second); url_query.addQueryItem(encoded_param.first, encoded_param.second); } diff --git a/src/tidal/tidalrequest.cpp b/src/tidal/tidalrequest.cpp index 1767c3b3..ec3f7283 100644 --- a/src/tidal/tidalrequest.cpp +++ b/src/tidal/tidalrequest.cpp @@ -172,7 +172,7 @@ void TidalRequest::FlushArtistsRequests() { if (type_ == QueryType_SearchArtists) { reply = CreateRequest("search/artists", parameters); } - NewClosure(reply, SIGNAL(finished()), this, SLOT(ArtistsReplyReceived(QNetworkReply*, int, int)), reply, request.limit, request.offset); + NewClosure(reply, SIGNAL(finished()), this, SLOT(ArtistsReplyReceived(QNetworkReply*, const int, const int)), reply, request.limit, request.offset); } @@ -214,7 +214,7 @@ void TidalRequest::FlushAlbumsRequests() { if (type_ == QueryType_SearchAlbums) { reply = CreateRequest("search/albums", parameters); } - NewClosure(reply, SIGNAL(finished()), this, SLOT(AlbumsReplyReceived(QNetworkReply*, int, int)), reply, request.limit, request.offset); + NewClosure(reply, SIGNAL(finished()), this, SLOT(AlbumsReplyReceived(QNetworkReply*, const int, const int)), reply, request.limit, request.offset); } @@ -256,7 +256,7 @@ void TidalRequest::FlushSongsRequests() { if (type_ == QueryType_SearchSongs) { reply = CreateRequest("search/tracks", parameters); } - NewClosure(reply, SIGNAL(finished()), this, SLOT(SongsReplyReceived(QNetworkReply*, int, int)), reply, request.limit, request.offset); + NewClosure(reply, SIGNAL(finished()), this, SLOT(SongsReplyReceived(QNetworkReply*, const int, const int)), reply, request.limit, request.offset); } @@ -469,7 +469,7 @@ void TidalRequest::FlushArtistAlbumsRequests() { ParamList parameters; if (request.offset > 0) parameters << Param("offset", QString::number(request.offset)); QNetworkReply *reply = CreateRequest(QString("artists/%1/albums").arg(request.artist_id), parameters); - NewClosure(reply, SIGNAL(finished()), this, SLOT(ArtistAlbumsReplyReceived(QNetworkReply*, int, int)), reply, request.artist_id, request.offset); + NewClosure(reply, SIGNAL(finished()), this, SLOT(ArtistAlbumsReplyReceived(QNetworkReply*, const int, const int)), reply, request.artist_id, request.offset); } @@ -712,13 +712,13 @@ void TidalRequest::FlushAlbumSongsRequests() { ParamList parameters; if (request.offset > 0) parameters << Param("offset", QString::number(request.offset)); QNetworkReply *reply = CreateRequest(QString("albums/%1/tracks").arg(request.album_id), parameters); - NewClosure(reply, SIGNAL(finished()), this, SLOT(AlbumSongsReplyReceived(QNetworkReply*, int, int, int, QString)), reply, request.artist_id, request.album_id, request.offset, request.album_artist); + NewClosure(reply, SIGNAL(finished()), this, SLOT(AlbumSongsReplyReceived(QNetworkReply*, const int, const int, const int, const QString&)), reply, request.artist_id, request.album_id, request.offset, request.album_artist); } } -void TidalRequest::AlbumSongsReplyReceived(QNetworkReply *reply, const int artist_id, const int album_id, const int offset_requested, const QString album_artist) { +void TidalRequest::AlbumSongsReplyReceived(QNetworkReply *reply, const int artist_id, const int album_id, const int offset_requested, const QString &album_artist) { --album_songs_requests_active_; ++album_songs_received_; @@ -729,7 +729,7 @@ void TidalRequest::AlbumSongsReplyReceived(QNetworkReply *reply, const int artis } -void TidalRequest::SongsReceived(QNetworkReply *reply, const int artist_id, const int album_id, const int limit_requested, const int offset_requested, const bool auto_login, const QString album_artist) { +void TidalRequest::SongsReceived(QNetworkReply *reply, const int artist_id, const int album_id, const int limit_requested, const int offset_requested, const bool auto_login, const QString &album_artist) { QString error; QByteArray data = GetReplyData(reply, error, auto_login); @@ -1033,13 +1033,13 @@ void TidalRequest::FlushAlbumCoverRequests() { QNetworkRequest req(request.url); QNetworkReply *reply = network_->get(req); album_cover_replies_ << reply; - NewClosure(reply, SIGNAL(finished()), this, SLOT(AlbumCoverReceived(QNetworkReply*, int, QUrl)), reply, request.album_id, request.url); + NewClosure(reply, SIGNAL(finished()), this, SLOT(AlbumCoverReceived(QNetworkReply*, const int, const QUrl&)), reply, request.album_id, request.url); } } -void TidalRequest::AlbumCoverReceived(QNetworkReply *reply, const int album_id, const QUrl url) { +void TidalRequest::AlbumCoverReceived(QNetworkReply *reply, const int album_id, const QUrl &url) { if (album_cover_replies_.contains(reply)) { album_cover_replies_.removeAll(reply); diff --git a/src/tidal/tidalrequest.h b/src/tidal/tidalrequest.h index 3613398c..b760697f 100644 --- a/src/tidal/tidalrequest.h +++ b/src/tidal/tidalrequest.h @@ -81,11 +81,11 @@ class TidalRequest : public TidalBaseRequest { void AlbumsReceived(QNetworkReply *reply, const int artist_id_requested, const int limit_requested, const int offset_requested, const bool auto_login); void SongsReplyReceived(QNetworkReply *reply, const int limit_requested, const int offset_requested); - void SongsReceived(QNetworkReply *reply, const int artist_id, const int album_id, const int limit_requested, const int offset_requested, const bool auto_login = false, const QString album_artist = QString()); + void SongsReceived(QNetworkReply *reply, const int artist_id, const int album_id, const int limit_requested, const int offset_requested, const bool auto_login = false, const QString &album_artist = QString()); void ArtistAlbumsReplyReceived(QNetworkReply *reply, const int artist_id, const int offset_requested); - void AlbumSongsReplyReceived(QNetworkReply *reply, const int artist_id, const int album_id, const int offset_requested, const QString album_artist); - void AlbumCoverReceived(QNetworkReply *reply, const int album_id, const QUrl url); + void AlbumSongsReplyReceived(QNetworkReply *reply, const int artist_id, const int album_id, const int offset_requested, const QString &album_artist); + void AlbumCoverReceived(QNetworkReply *reply, const int album_id, const QUrl &url); private: typedef QPair Param; diff --git a/src/tidal/tidalservice.cpp b/src/tidal/tidalservice.cpp index 01a83ce5..072daeb7 100644 --- a/src/tidal/tidalservice.cpp +++ b/src/tidal/tidalservice.cpp @@ -366,6 +366,12 @@ void TidalService::AccessTokenRequestFinished(QNetworkReply *reply) { } } + int http_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + if (http_code != 200) { + LoginError(QString("Received HTTP code %1").arg(http_code)); + return; + } + QByteArray data(reply->readAll()); QJsonParseError json_error; QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error); @@ -459,11 +465,9 @@ void TidalService::SendLogin(const QString &username, const QString &password, c << Param("password", password) << Param("clientVersion", "2.2.1--7"); - QStringList query_items; QUrlQuery url_query; for (const Param ¶m : params) { EncodedParam encoded_param(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second)); - query_items << QString(encoded_param.first + "=" + encoded_param.second); url_query.addQueryItem(encoded_param.first, encoded_param.second); } diff --git a/src/tidal/tidalstreamurlrequest.cpp b/src/tidal/tidalstreamurlrequest.cpp index 13be19c7..a5479690 100644 --- a/src/tidal/tidalstreamurlrequest.cpp +++ b/src/tidal/tidalstreamurlrequest.cpp @@ -271,7 +271,7 @@ void TidalStreamURLRequest::StreamURLReceived() { if (urls.isEmpty()) { error = Error("Missing stream urls.", json_obj); - emit StreamURLFinished(original_url_, original_url_, filetype); + emit StreamURLFinished(original_url_, original_url_, filetype, error); return; }