Port to QStringLiteral operator
This commit is contained in:
@@ -55,7 +55,7 @@ QobuzBaseRequest::~QobuzBaseRequest() = default;
|
||||
QNetworkReply *QobuzBaseRequest::CreateRequest(const QString &ressource_name, const ParamList ¶ms_provided) {
|
||||
|
||||
ParamList params = ParamList() << params_provided
|
||||
<< Param(QStringLiteral("app_id"), app_id());
|
||||
<< Param(u"app_id"_s, app_id());
|
||||
|
||||
std::sort(params.begin(), params.end());
|
||||
|
||||
@@ -68,7 +68,7 @@ QNetworkReply *QobuzBaseRequest::CreateRequest(const QString &ressource_name, co
|
||||
url.setQuery(url_query);
|
||||
QNetworkRequest req(url);
|
||||
req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
|
||||
req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded"));
|
||||
req.setHeader(QNetworkRequest::ContentTypeHeader, u"application/x-www-form-urlencoded"_s);
|
||||
req.setRawHeader("X-App-Id", app_id().toUtf8());
|
||||
if (authenticated()) req.setRawHeader("X-User-Auth-Token", user_auth_token().toUtf8());
|
||||
|
||||
@@ -138,23 +138,23 @@ QJsonObject QobuzBaseRequest::ExtractJsonObj(QByteArray &data) {
|
||||
QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error);
|
||||
|
||||
if (json_error.error != QJsonParseError::NoError) {
|
||||
Error(QStringLiteral("Reply from server missing Json data."), data);
|
||||
Error(u"Reply from server missing Json data."_s, data);
|
||||
return QJsonObject();
|
||||
}
|
||||
|
||||
if (json_doc.isEmpty()) {
|
||||
Error(QStringLiteral("Received empty Json document."), data);
|
||||
Error(u"Received empty Json document."_s, data);
|
||||
return QJsonObject();
|
||||
}
|
||||
|
||||
if (!json_doc.isObject()) {
|
||||
Error(QStringLiteral("Json document is not an object."), json_doc);
|
||||
Error(u"Json document is not an object."_s, json_doc);
|
||||
return QJsonObject();
|
||||
}
|
||||
|
||||
QJsonObject json_obj = json_doc.object();
|
||||
if (json_obj.isEmpty()) {
|
||||
Error(QStringLiteral("Received empty Json object."), json_doc);
|
||||
Error(u"Received empty Json object."_s, json_doc);
|
||||
return QJsonObject();
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ QJsonValue QobuzBaseRequest::ExtractItems(QByteArray &data) {
|
||||
QJsonValue QobuzBaseRequest::ExtractItems(QJsonObject &json_obj) {
|
||||
|
||||
if (!json_obj.contains("items"_L1)) {
|
||||
Error(QStringLiteral("Json reply is missing items."), json_obj);
|
||||
Error(u"Json reply is missing items."_s, json_obj);
|
||||
return QJsonArray();
|
||||
}
|
||||
QJsonValue json_items = json_obj["items"_L1];
|
||||
@@ -185,7 +185,7 @@ QString QobuzBaseRequest::ErrorsToHTML(const QStringList &errors) {
|
||||
|
||||
QString error_html;
|
||||
for (const QString &error : errors) {
|
||||
error_html += error + QStringLiteral("<br />");
|
||||
error_html += error + u"<br />"_s;
|
||||
}
|
||||
return error_html;
|
||||
|
||||
|
||||
@@ -36,6 +36,8 @@
|
||||
#include "qobuzbaserequest.h"
|
||||
#include "qobuzfavoriterequest.h"
|
||||
|
||||
using namespace Qt::Literals::StringLiterals;
|
||||
|
||||
QobuzFavoriteRequest::QobuzFavoriteRequest(QobuzService *service, SharedPtr<NetworkAccessManager> network, QObject *parent)
|
||||
: QobuzBaseRequest(service, network, parent),
|
||||
service_(service),
|
||||
@@ -56,12 +58,12 @@ QString QobuzFavoriteRequest::FavoriteText(const FavoriteType type) {
|
||||
|
||||
switch (type) {
|
||||
case FavoriteType::Artists:
|
||||
return QStringLiteral("artists");
|
||||
return u"artists"_s;
|
||||
case FavoriteType::Albums:
|
||||
return QStringLiteral("albums");
|
||||
return u"albums"_s;
|
||||
case FavoriteType::Songs:
|
||||
default:
|
||||
return QStringLiteral("tracks");
|
||||
return u"tracks"_s;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -70,13 +72,13 @@ QString QobuzFavoriteRequest::FavoriteMethod(const FavoriteType type) {
|
||||
|
||||
switch (type) {
|
||||
case FavoriteType::Artists:
|
||||
return QStringLiteral("artist_ids");
|
||||
return u"artist_ids"_s;
|
||||
break;
|
||||
case FavoriteType::Albums:
|
||||
return QStringLiteral("album_ids");
|
||||
return u"album_ids"_s;
|
||||
break;
|
||||
case FavoriteType::Songs:
|
||||
return QStringLiteral("track_ids");
|
||||
return u"track_ids"_s;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -132,8 +134,8 @@ void QobuzFavoriteRequest::AddFavorites(const FavoriteType type, const SongList
|
||||
|
||||
void QobuzFavoriteRequest::AddFavoritesRequest(const FavoriteType type, const QStringList &ids_list, const SongList &songs) {
|
||||
|
||||
const ParamList params = ParamList() << Param(QStringLiteral("app_id"), app_id())
|
||||
<< Param(QStringLiteral("user_auth_token"), user_auth_token())
|
||||
const ParamList params = ParamList() << Param(u"app_id"_s, app_id())
|
||||
<< Param(u"user_auth_token"_s, user_auth_token())
|
||||
<< Param(FavoriteMethod(type), ids_list.join(u','));
|
||||
|
||||
QUrlQuery url_query;
|
||||
@@ -141,7 +143,7 @@ void QobuzFavoriteRequest::AddFavoritesRequest(const FavoriteType type, const QS
|
||||
url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(param.first)), QString::fromLatin1(QUrl::toPercentEncoding(param.second)));
|
||||
}
|
||||
|
||||
QNetworkReply *reply = CreateRequest(QStringLiteral("favorite/create"), params);
|
||||
QNetworkReply *reply = CreateRequest(u"favorite/create"_s, params);
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, type, songs]() { AddFavoritesReply(reply, type, songs); });
|
||||
replies_ << reply;
|
||||
|
||||
@@ -227,8 +229,8 @@ void QobuzFavoriteRequest::RemoveFavorites(const FavoriteType type, const SongLi
|
||||
|
||||
void QobuzFavoriteRequest::RemoveFavoritesRequest(const FavoriteType type, const QStringList &ids_list, const SongList &songs) {
|
||||
|
||||
const ParamList params = ParamList() << Param(QStringLiteral("app_id"), app_id())
|
||||
<< Param(QStringLiteral("user_auth_token"), user_auth_token())
|
||||
const ParamList params = ParamList() << Param(u"app_id"_s, app_id())
|
||||
<< Param(u"user_auth_token"_s, user_auth_token())
|
||||
<< Param(FavoriteMethod(type), ids_list.join(u','));
|
||||
|
||||
QUrlQuery url_query;
|
||||
@@ -236,7 +238,7 @@ void QobuzFavoriteRequest::RemoveFavoritesRequest(const FavoriteType type, const
|
||||
url_query.addQueryItem(QString::fromLatin1(QUrl::toPercentEncoding(param.first)), QString::fromLatin1(QUrl::toPercentEncoding(param.second)));
|
||||
}
|
||||
|
||||
QNetworkReply *reply = CreateRequest(QStringLiteral("favorite/delete"), params);
|
||||
QNetworkReply *reply = CreateRequest(u"favorite/delete"_s, params);
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, type, songs]() { RemoveFavoritesReply(reply, type, songs); });
|
||||
replies_ << reply;
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ void QobuzRequest::Process() {
|
||||
SongsSearch();
|
||||
break;
|
||||
default:
|
||||
Error(QStringLiteral("Invalid query type."));
|
||||
Error(u"Invalid query type."_s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -231,18 +231,18 @@ void QobuzRequest::FlushArtistsRequests() {
|
||||
|
||||
ParamList params;
|
||||
if (query_type_ == Type::FavouriteArtists) {
|
||||
params << Param(QStringLiteral("type"), QStringLiteral("artists"));
|
||||
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
||||
params << Param(u"type"_s, u"artists"_s);
|
||||
params << Param(u"user_auth_token"_s, user_auth_token());
|
||||
}
|
||||
else if (query_type_ == Type::SearchArtists) params << Param(QStringLiteral("query"), search_text_);
|
||||
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||
else if (query_type_ == Type::SearchArtists) params << Param(u"query"_s, search_text_);
|
||||
if (request.limit > 0) params << Param(u"limit"_s, QString::number(request.limit));
|
||||
if (request.offset > 0) params << Param(u"offset"_s, QString::number(request.offset));
|
||||
QNetworkReply *reply = nullptr;
|
||||
if (query_type_ == Type::FavouriteArtists) {
|
||||
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
||||
reply = CreateRequest(u"favorite/getUserFavorites"_s, params);
|
||||
}
|
||||
else if (query_type_ == Type::SearchArtists) {
|
||||
reply = CreateRequest(QStringLiteral("artist/search"), params);
|
||||
reply = CreateRequest(u"artist/search"_s, params);
|
||||
}
|
||||
if (!reply) continue;
|
||||
replies_ << reply;
|
||||
@@ -283,18 +283,18 @@ void QobuzRequest::FlushAlbumsRequests() {
|
||||
|
||||
ParamList params;
|
||||
if (query_type_ == Type::FavouriteAlbums) {
|
||||
params << Param(QStringLiteral("type"), QStringLiteral("albums"));
|
||||
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
||||
params << Param(u"type"_s, u"albums"_s);
|
||||
params << Param(u"user_auth_token"_s, user_auth_token());
|
||||
}
|
||||
else if (query_type_ == Type::SearchAlbums) params << Param(QStringLiteral("query"), search_text_);
|
||||
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||
else if (query_type_ == Type::SearchAlbums) params << Param(u"query"_s, search_text_);
|
||||
if (request.limit > 0) params << Param(u"limit"_s, QString::number(request.limit));
|
||||
if (request.offset > 0) params << Param(u"offset"_s, QString::number(request.offset));
|
||||
QNetworkReply *reply = nullptr;
|
||||
if (query_type_ == Type::FavouriteAlbums) {
|
||||
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
||||
reply = CreateRequest(u"favorite/getUserFavorites"_s, params);
|
||||
}
|
||||
else if (query_type_ == Type::SearchAlbums) {
|
||||
reply = CreateRequest(QStringLiteral("album/search"), params);
|
||||
reply = CreateRequest(u"album/search"_s, params);
|
||||
}
|
||||
if (!reply) continue;
|
||||
replies_ << reply;
|
||||
@@ -335,18 +335,18 @@ void QobuzRequest::FlushSongsRequests() {
|
||||
|
||||
ParamList params;
|
||||
if (query_type_ == Type::FavouriteSongs) {
|
||||
params << Param(QStringLiteral("type"), QStringLiteral("tracks"));
|
||||
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
||||
params << Param(u"type"_s, u"tracks"_s);
|
||||
params << Param(u"user_auth_token"_s, user_auth_token());
|
||||
}
|
||||
else if (query_type_ == Type::SearchSongs) params << Param(QStringLiteral("query"), search_text_);
|
||||
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||
else if (query_type_ == Type::SearchSongs) params << Param(u"query"_s, search_text_);
|
||||
if (request.limit > 0) params << Param(u"limit"_s, QString::number(request.limit));
|
||||
if (request.offset > 0) params << Param(u"offset"_s, QString::number(request.offset));
|
||||
QNetworkReply *reply = nullptr;
|
||||
if (query_type_ == Type::FavouriteSongs) {
|
||||
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
||||
reply = CreateRequest(u"favorite/getUserFavorites"_s, params);
|
||||
}
|
||||
else if (query_type_ == Type::SearchSongs) {
|
||||
reply = CreateRequest(QStringLiteral("track/search"), params);
|
||||
reply = CreateRequest(u"track/search"_s, params);
|
||||
}
|
||||
if (!reply) continue;
|
||||
replies_ << reply;
|
||||
@@ -427,12 +427,12 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||
|
||||
if (!json_obj.contains("artists"_L1)) {
|
||||
ArtistsFinishCheck();
|
||||
Error(QStringLiteral("Json object is missing artists."), json_obj);
|
||||
Error(u"Json object is missing artists."_s, json_obj);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_artists = json_obj["artists"_L1];
|
||||
if (!value_artists.isObject()) {
|
||||
Error(QStringLiteral("Json artists is not an object."), json_obj);
|
||||
Error(u"Json artists is not an object."_s, json_obj);
|
||||
ArtistsFinishCheck();
|
||||
return;
|
||||
}
|
||||
@@ -443,7 +443,7 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||
!obj_artists.contains("total"_L1) ||
|
||||
!obj_artists.contains("items"_L1)) {
|
||||
ArtistsFinishCheck();
|
||||
Error(QStringLiteral("Json artists object is missing values."), json_obj);
|
||||
Error(u"Json artists object is missing values."_s, json_obj);
|
||||
return;
|
||||
}
|
||||
//int limit = obj_artists["limit"].toInt();
|
||||
@@ -488,7 +488,7 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||
++artists_received;
|
||||
|
||||
if (!value_item.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, item not a object."));
|
||||
Error(u"Invalid Json reply, item not a object."_s);
|
||||
continue;
|
||||
}
|
||||
QJsonObject obj_item = value_item.toObject();
|
||||
@@ -496,14 +496,14 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||
if (obj_item.contains("item"_L1)) {
|
||||
QJsonValue json_item = obj_item["item"_L1];
|
||||
if (!json_item.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, item not a object."), json_item);
|
||||
Error(u"Invalid Json reply, item not a object."_s, json_item);
|
||||
continue;
|
||||
}
|
||||
obj_item = json_item.toObject();
|
||||
}
|
||||
|
||||
if (!obj_item.contains("id"_L1) || !obj_item.contains("name"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, item missing id or album."), obj_item);
|
||||
Error(u"Invalid Json reply, item missing id or album."_s, obj_item);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -591,11 +591,11 @@ void QobuzRequest::FlushArtistAlbumsRequests() {
|
||||
|
||||
const ArtistAlbumsRequest request = artist_albums_requests_queue_.dequeue();
|
||||
|
||||
ParamList params = ParamList() << Param(QStringLiteral("artist_id"), request.artist.artist_id)
|
||||
<< Param(QStringLiteral("extra"), QStringLiteral("albums"));
|
||||
ParamList params = ParamList() << Param(u"artist_id"_s, request.artist.artist_id)
|
||||
<< Param(u"extra"_s, u"albums"_s);
|
||||
|
||||
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||
QNetworkReply *reply = CreateRequest(QStringLiteral("artist/get"), params);
|
||||
if (request.offset > 0) params << Param(u"offset"_s, QString::number(request.offset));
|
||||
QNetworkReply *reply = CreateRequest(u"artist/get"_s, params);
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { ArtistAlbumsReplyReceived(reply, request.artist, request.offset); });
|
||||
replies_ << reply;
|
||||
|
||||
@@ -650,18 +650,18 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||
|
||||
if (artist.artist_id != artist_requested.artist_id) {
|
||||
AlbumsFinishCheck(artist_requested);
|
||||
Error(QStringLiteral("Artist ID returned does not match artist ID requested."), json_obj);
|
||||
Error(u"Artist ID returned does not match artist ID requested."_s, json_obj);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains("albums"_L1)) {
|
||||
AlbumsFinishCheck(artist_requested);
|
||||
Error(QStringLiteral("Json object is missing albums."), json_obj);
|
||||
Error(u"Json object is missing albums."_s, json_obj);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_albums = json_obj["albums"_L1];
|
||||
if (!value_albums.isObject()) {
|
||||
Error(QStringLiteral("Json albums is not an object."), json_obj);
|
||||
Error(u"Json albums is not an object."_s, json_obj);
|
||||
AlbumsFinishCheck(artist_requested);
|
||||
return;
|
||||
}
|
||||
@@ -672,7 +672,7 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||
!obj_albums.contains("total"_L1) ||
|
||||
!obj_albums.contains("items"_L1)) {
|
||||
AlbumsFinishCheck(artist_requested);
|
||||
Error(QStringLiteral("Json albums object is missing values."), json_obj);
|
||||
Error(u"Json albums object is missing values."_s, json_obj);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -706,13 +706,13 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||
++albums_received;
|
||||
|
||||
if (!value_item.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, item in array is not a object."));
|
||||
Error(u"Invalid Json reply, item in array is not a object."_s);
|
||||
continue;
|
||||
}
|
||||
QJsonObject obj_item = value_item.toObject();
|
||||
|
||||
if (!obj_item.contains("artist"_L1) || !obj_item.contains("title"_L1) || !obj_item.contains("id"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, item missing artist, title or id."), obj_item);
|
||||
Error(u"Invalid Json reply, item missing artist, title or id."_s, obj_item);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -734,7 +734,7 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||
}
|
||||
QJsonObject obj_artist = value_artist.toObject();
|
||||
if (!obj_artist.contains("id"_L1) || !obj_artist.contains("name"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, item artist missing id or name."), obj_artist);
|
||||
Error(u"Invalid Json reply, item artist missing id or name."_s, obj_artist);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -848,9 +848,9 @@ void QobuzRequest::FlushAlbumSongsRequests() {
|
||||
while (!album_songs_requests_queue_.isEmpty() && album_songs_requests_active_ < kMaxConcurrentAlbumSongsRequests) {
|
||||
|
||||
AlbumSongsRequest request = album_songs_requests_queue_.dequeue();
|
||||
ParamList params = ParamList() << Param(QStringLiteral("album_id"), request.album.album_id);
|
||||
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||
QNetworkReply *reply = CreateRequest(QStringLiteral("album/get"), params);
|
||||
ParamList params = ParamList() << Param(u"album_id"_s, request.album.album_id);
|
||||
if (request.offset > 0) params << Param(u"offset"_s, QString::number(request.offset));
|
||||
QNetworkReply *reply = CreateRequest(u"album/get"_s, params);
|
||||
replies_ << reply;
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumSongsReplyReceived(reply, request.artist, request.album, request.offset); });
|
||||
|
||||
@@ -894,7 +894,7 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
}
|
||||
|
||||
if (!json_obj.contains("tracks"_L1)) {
|
||||
Error(QStringLiteral("Json object is missing tracks."), json_obj);
|
||||
Error(u"Json object is missing tracks."_s, json_obj);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
@@ -915,13 +915,13 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
if (json_obj.contains("artist"_L1)) {
|
||||
QJsonValue value_artist = json_obj["artist"_L1];
|
||||
if (!value_artist.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, album artist is not a object."), value_artist);
|
||||
Error(u"Invalid Json reply, album artist is not a object."_s, value_artist);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_artist = value_artist.toObject();
|
||||
if (!obj_artist.contains("id"_L1) || !obj_artist.contains("name"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, album artist is missing id or name."), obj_artist);
|
||||
Error(u"Invalid Json reply, album artist is missing id or name."_s, obj_artist);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
@@ -937,13 +937,13 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
if (json_obj.contains("image"_L1)) {
|
||||
QJsonValue value_image = json_obj["image"_L1];
|
||||
if (!value_image.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, album image is not a object."), value_image);
|
||||
Error(u"Invalid Json reply, album image is not a object."_s, value_image);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_image = value_image.toObject();
|
||||
if (!obj_image.contains("large"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, album image is missing large."), obj_image);
|
||||
Error(u"Invalid Json reply, album image is missing large."_s, obj_image);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
@@ -955,7 +955,7 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
|
||||
QJsonValue value_tracks = json_obj["tracks"_L1];
|
||||
if (!value_tracks.isObject()) {
|
||||
Error(QStringLiteral("Json tracks is not an object."), json_obj);
|
||||
Error(u"Json tracks is not an object."_s, json_obj);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
@@ -966,7 +966,7 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
!obj_tracks.contains("total"_L1) ||
|
||||
!obj_tracks.contains("items"_L1)) {
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
Error(QStringLiteral("Json songs object is missing values."), json_obj);
|
||||
Error(u"Json songs object is missing values."_s, json_obj);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1002,7 +1002,7 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
for (const QJsonValue &value_item : array_items) {
|
||||
|
||||
if (!value_item.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, track is not a object."));
|
||||
Error(u"Invalid Json reply, track is not a object."_s);
|
||||
continue;
|
||||
}
|
||||
QJsonObject obj_item = value_item.toObject();
|
||||
@@ -1072,7 +1072,7 @@ void QobuzRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
|
||||
!json_obj.contains("copyright"_L1) ||
|
||||
!json_obj.contains("streamable"_L1)
|
||||
) {
|
||||
Error(QStringLiteral("Invalid Json reply, track is missing one or more values."), json_obj);
|
||||
Error(u"Invalid Json reply, track is missing one or more values."_s, json_obj);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1103,7 +1103,7 @@ void QobuzRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
|
||||
|
||||
QJsonValue value_album = json_obj["album"_L1];
|
||||
if (!value_album.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, album is not an object."), value_album);
|
||||
Error(u"Invalid Json reply, album is not an object."_s, value_album);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_album = value_album.toObject();
|
||||
@@ -1124,12 +1124,12 @@ void QobuzRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
|
||||
if (obj_album.contains("artist"_L1)) {
|
||||
QJsonValue value_artist = obj_album["artist"_L1];
|
||||
if (!value_artist.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, album artist is not a object."), value_artist);
|
||||
Error(u"Invalid Json reply, album artist is not a object."_s, value_artist);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_artist = value_artist.toObject();
|
||||
if (!obj_artist.contains("id"_L1) || !obj_artist.contains("name"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, album artist is missing id or name."), obj_artist);
|
||||
Error(u"Invalid Json reply, album artist is missing id or name."_s, obj_artist);
|
||||
return;
|
||||
}
|
||||
if (obj_artist["id"_L1].isString()) {
|
||||
@@ -1144,12 +1144,12 @@ void QobuzRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
|
||||
if (obj_album.contains("image"_L1)) {
|
||||
QJsonValue value_image = obj_album["image"_L1];
|
||||
if (!value_image.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, album image is not a object."), value_image);
|
||||
Error(u"Invalid Json reply, album image is not a object."_s, value_image);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_image = value_image.toObject();
|
||||
if (!obj_image.contains("large"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, album image is missing large."), obj_image);
|
||||
Error(u"Invalid Json reply, album image is missing large."_s, obj_image);
|
||||
return;
|
||||
}
|
||||
QString album_image = obj_image["large"_L1].toString();
|
||||
@@ -1162,12 +1162,12 @@ void QobuzRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
|
||||
if (json_obj.contains("composer"_L1)) {
|
||||
QJsonValue value_composer = json_obj["composer"_L1];
|
||||
if (!value_composer.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, track composer is not a object."), value_composer);
|
||||
Error(u"Invalid Json reply, track composer is not a object."_s, value_composer);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_composer = value_composer.toObject();
|
||||
if (!obj_composer.contains("id"_L1) || !obj_composer.contains("name"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, track composer is missing id or name."), obj_composer);
|
||||
Error(u"Invalid Json reply, track composer is missing id or name."_s, obj_composer);
|
||||
return;
|
||||
}
|
||||
composer = obj_composer["name"_L1].toString();
|
||||
@@ -1176,12 +1176,12 @@ void QobuzRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
|
||||
if (json_obj.contains("performer"_L1)) {
|
||||
QJsonValue value_performer = json_obj["performer"_L1];
|
||||
if (!value_performer.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, track performer is not a object."), value_performer);
|
||||
Error(u"Invalid Json reply, track performer is not a object."_s, value_performer);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_performer = value_performer.toObject();
|
||||
if (!obj_performer.contains("id"_L1) || !obj_performer.contains("name"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, track performer is missing id or name."), obj_performer);
|
||||
Error(u"Invalid Json reply, track performer is missing id or name."_s, obj_performer);
|
||||
return;
|
||||
}
|
||||
performer = obj_performer["name"_L1].toString();
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
#include "streaming/streamingsearchview.h"
|
||||
#include "collection/collectionbackend.h"
|
||||
#include "collection/collectionmodel.h"
|
||||
#include "collection/collectionfilter.h"
|
||||
#include "qobuzservice.h"
|
||||
#include "qobuzurlhandler.h"
|
||||
#include "qobuzbaserequest.h"
|
||||
@@ -80,7 +79,7 @@ constexpr char kSongsTable[] = "qobuz_songs";
|
||||
} // namespace
|
||||
|
||||
QobuzService::QobuzService(Application *app, QObject *parent)
|
||||
: StreamingService(Song::Source::Qobuz, QStringLiteral("Qobuz"), QStringLiteral("qobuz"), QLatin1String(QobuzSettingsPage::kSettingsGroup), SettingsDialog::Page::Qobuz, app, parent),
|
||||
: StreamingService(Song::Source::Qobuz, u"Qobuz"_s, u"qobuz"_s, QLatin1String(QobuzSettingsPage::kSettingsGroup), SettingsDialog::Page::Qobuz, app, parent),
|
||||
app_(app),
|
||||
network_(app->network()),
|
||||
url_handler_(new QobuzUrlHandler(app, this)),
|
||||
@@ -278,10 +277,10 @@ void QobuzService::SendLoginWithCredentials(const QString &app_id, const QString
|
||||
timer_login_attempt_->setInterval(kTimeResetLoginAttempts);
|
||||
timer_login_attempt_->start();
|
||||
|
||||
const ParamList params = ParamList() << Param(QStringLiteral("app_id"), app_id)
|
||||
<< Param(QStringLiteral("username"), username)
|
||||
<< Param(QStringLiteral("password"), password)
|
||||
<< Param(QStringLiteral("device_manufacturer_id"), Utilities::MacAddress());
|
||||
const ParamList params = ParamList() << Param(u"app_id"_s, app_id)
|
||||
<< Param(u"username"_s, username)
|
||||
<< Param(u"password"_s, password)
|
||||
<< Param(u"device_manufacturer_id"_s, Utilities::MacAddress());
|
||||
|
||||
QUrlQuery url_query;
|
||||
for (const Param ¶m : params) {
|
||||
@@ -292,7 +291,7 @@ void QobuzService::SendLoginWithCredentials(const QString &app_id, const QString
|
||||
QNetworkRequest req(url);
|
||||
req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
|
||||
|
||||
req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded"));
|
||||
req.setHeader(QNetworkRequest::ContentTypeHeader, u"application/x-www-form-urlencoded"_s);
|
||||
|
||||
QByteArray query = url_query.toString(QUrl::FullyEncoded).toUtf8();
|
||||
QNetworkReply *reply = network_->post(req, query);
|
||||
@@ -357,79 +356,79 @@ void QobuzService::HandleAuthReply(QNetworkReply *reply) {
|
||||
QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error);
|
||||
|
||||
if (json_error.error != QJsonParseError::NoError) {
|
||||
LoginError(QStringLiteral("Authentication reply from server missing Json data."));
|
||||
LoginError(u"Authentication reply from server missing Json data."_s);
|
||||
return;
|
||||
}
|
||||
|
||||
if (json_doc.isEmpty()) {
|
||||
LoginError(QStringLiteral("Authentication reply from server has empty Json document."));
|
||||
LoginError(u"Authentication reply from server has empty Json document."_s);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_doc.isObject()) {
|
||||
LoginError(QStringLiteral("Authentication reply from server has Json document that is not an object."), json_doc);
|
||||
LoginError(u"Authentication reply from server has Json document that is not an object."_s, json_doc);
|
||||
return;
|
||||
}
|
||||
|
||||
QJsonObject json_obj = json_doc.object();
|
||||
if (json_obj.isEmpty()) {
|
||||
LoginError(QStringLiteral("Authentication reply from server has empty Json object."), json_doc);
|
||||
LoginError(u"Authentication reply from server has empty Json object."_s, json_doc);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains("user_auth_token"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user_auth_token"), json_obj);
|
||||
LoginError(u"Authentication reply from server is missing user_auth_token"_s, json_obj);
|
||||
return;
|
||||
}
|
||||
user_auth_token_ = json_obj["user_auth_token"_L1].toString();
|
||||
|
||||
if (!json_obj.contains("user"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user"), json_obj);
|
||||
LoginError(u"Authentication reply from server is missing user"_s, json_obj);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_user = json_obj["user"_L1];
|
||||
if (!value_user.isObject()) {
|
||||
LoginError(QStringLiteral("Authentication reply user is not a object"), json_obj);
|
||||
LoginError(u"Authentication reply user is not a object"_s, json_obj);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_user = value_user.toObject();
|
||||
|
||||
if (!obj_user.contains("id"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user id"), obj_user);
|
||||
LoginError(u"Authentication reply from server is missing user id"_s, obj_user);
|
||||
return;
|
||||
}
|
||||
user_id_ = obj_user["id"_L1].toInt();
|
||||
|
||||
if (!obj_user.contains("device"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user device"), obj_user);
|
||||
LoginError(u"Authentication reply from server is missing user device"_s, obj_user);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_device = obj_user["device"_L1];
|
||||
if (!value_device.isObject()) {
|
||||
LoginError(QStringLiteral("Authentication reply from server user device is not a object"), value_device);
|
||||
LoginError(u"Authentication reply from server user device is not a object"_s, value_device);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_device = value_device.toObject();
|
||||
|
||||
if (!obj_device.contains("device_manufacturer_id"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server device is missing device_manufacturer_id"), obj_device);
|
||||
LoginError(u"Authentication reply from server device is missing device_manufacturer_id"_s, obj_device);
|
||||
return;
|
||||
}
|
||||
device_id_ = obj_device["device_manufacturer_id"_L1].toString();
|
||||
|
||||
if (!obj_user.contains("credential"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user credential"), obj_user);
|
||||
LoginError(u"Authentication reply from server is missing user credential"_s, obj_user);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_credential = obj_user["credential"_L1];
|
||||
if (!value_credential.isObject()) {
|
||||
LoginError(QStringLiteral("Authentication reply from serve userr credential is not a object"), value_device);
|
||||
LoginError(u"Authentication reply from serve userr credential is not a object"_s, value_device);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_credential = value_credential.toObject();
|
||||
|
||||
if (!obj_credential.contains("id"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply user credential from server is missing user credential id"), obj_credential);
|
||||
LoginError(u"Authentication reply user credential from server is missing user credential id"_s, obj_credential);
|
||||
return;
|
||||
}
|
||||
credential_id_ = obj_credential["id"_L1].toInt();
|
||||
@@ -767,7 +766,7 @@ void QobuzService::LoginError(const QString &error, const QVariant &debug) {
|
||||
QString error_html;
|
||||
for (const QString &e : std::as_const(login_errors_)) {
|
||||
qLog(Error) << "Qobuz:" << e;
|
||||
error_html += e + QStringLiteral("<br />");
|
||||
error_html += e + u"<br />"_s;
|
||||
}
|
||||
if (debug.isValid()) qLog(Debug) << debug;
|
||||
|
||||
|
||||
@@ -118,8 +118,8 @@ void QobuzStreamURLRequest::GetStreamURL() {
|
||||
|
||||
quint64 timestamp = QDateTime::currentSecsSinceEpoch();
|
||||
|
||||
ParamList params_to_sign = ParamList() << Param(QStringLiteral("format_id"), QString::number(format()))
|
||||
<< Param(QStringLiteral("track_id"), QString::number(song_id_));
|
||||
ParamList params_to_sign = ParamList() << Param(u"format_id"_s, QString::number(format()))
|
||||
<< Param(u"track_id"_s, QString::number(song_id_));
|
||||
|
||||
std::sort(params_to_sign.begin(), params_to_sign.end());
|
||||
|
||||
@@ -135,13 +135,13 @@ void QobuzStreamURLRequest::GetStreamURL() {
|
||||
const QString signature = QString::fromLatin1(digest.toHex()).rightJustified(32, u'0').toLower();
|
||||
|
||||
ParamList params = params_to_sign;
|
||||
params << Param(QStringLiteral("request_ts"), QString::number(timestamp));
|
||||
params << Param(QStringLiteral("request_sig"), signature);
|
||||
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
||||
params << Param(u"request_ts"_s, QString::number(timestamp));
|
||||
params << Param(u"request_sig"_s, signature);
|
||||
params << Param(u"user_auth_token"_s, user_auth_token());
|
||||
|
||||
std::sort(params.begin(), params.end());
|
||||
|
||||
reply_ = CreateRequest(QStringLiteral("track/getFileUrl"), params);
|
||||
reply_ = CreateRequest(u"track/getFileUrl"_s, params);
|
||||
QObject::connect(reply_, &QNetworkReply::finished, this, &QobuzStreamURLRequest::StreamURLReceived);
|
||||
|
||||
}
|
||||
@@ -172,20 +172,20 @@ void QobuzStreamURLRequest::StreamURLReceived() {
|
||||
}
|
||||
|
||||
if (!json_obj.contains("track_id"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, stream url is missing track_id."), json_obj);
|
||||
Error(u"Invalid Json reply, stream url is missing track_id."_s, json_obj);
|
||||
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
|
||||
return;
|
||||
}
|
||||
|
||||
int track_id = json_obj["track_id"_L1].toInt();
|
||||
if (track_id != song_id_) {
|
||||
Error(QStringLiteral("Incorrect track ID returned."), json_obj);
|
||||
Error(u"Incorrect track ID returned."_s, json_obj);
|
||||
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains("mime_type"_L1) || !json_obj.contains("url"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, stream url is missing url or mime_type."), json_obj);
|
||||
Error(u"Invalid Json reply, stream url is missing url or mime_type."_s, json_obj);
|
||||
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
|
||||
return;
|
||||
}
|
||||
@@ -206,7 +206,7 @@ void QobuzStreamURLRequest::StreamURLReceived() {
|
||||
}
|
||||
|
||||
if (!url.isValid()) {
|
||||
Error(QStringLiteral("Returned stream url is invalid."), json_obj);
|
||||
Error(u"Returned stream url is invalid."_s, json_obj);
|
||||
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user