Replace QLatin1String with operator _L1
This commit is contained in:
@@ -43,6 +43,8 @@
|
||||
#include "qobuzservice.h"
|
||||
#include "qobuzbaserequest.h"
|
||||
|
||||
using namespace Qt::StringLiterals;
|
||||
|
||||
QobuzBaseRequest::QobuzBaseRequest(QobuzService *service, SharedPtr<NetworkAccessManager> network, QObject *parent)
|
||||
: QObject(parent),
|
||||
service_(service),
|
||||
@@ -107,9 +109,9 @@ QByteArray QobuzBaseRequest::GetReplyData(QNetworkReply *reply) {
|
||||
QJsonDocument json_doc = QJsonDocument::fromJson(data, &parse_error);
|
||||
if (parse_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) {
|
||||
QJsonObject json_obj = json_doc.object();
|
||||
if (!json_obj.isEmpty() && json_obj.contains(QLatin1String("status")) && json_obj.contains(QLatin1String("code")) && json_obj.contains(QLatin1String("message"))) {
|
||||
int code = json_obj[QLatin1String("code")].toInt();
|
||||
QString message = json_obj[QLatin1String("message")].toString();
|
||||
if (!json_obj.isEmpty() && json_obj.contains("status"_L1) && json_obj.contains("code"_L1) && json_obj.contains("message"_L1)) {
|
||||
int code = json_obj["code"_L1].toInt();
|
||||
QString message = json_obj["message"_L1].toString();
|
||||
error = QStringLiteral("%1 (%2)").arg(message).arg(code);
|
||||
}
|
||||
}
|
||||
@@ -170,11 +172,11 @@ QJsonValue QobuzBaseRequest::ExtractItems(QByteArray &data) {
|
||||
|
||||
QJsonValue QobuzBaseRequest::ExtractItems(QJsonObject &json_obj) {
|
||||
|
||||
if (!json_obj.contains(QLatin1String("items"))) {
|
||||
if (!json_obj.contains("items"_L1)) {
|
||||
Error(QStringLiteral("Json reply is missing items."), json_obj);
|
||||
return QJsonArray();
|
||||
}
|
||||
QJsonValue json_items = json_obj[QLatin1String("items")];
|
||||
QJsonValue json_items = json_obj["items"_L1];
|
||||
return json_items;
|
||||
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@ void QobuzFavoriteRequest::AddFavoritesRequest(const FavoriteType type, const QS
|
||||
|
||||
const ParamList params = ParamList() << Param(QStringLiteral("app_id"), app_id())
|
||||
<< Param(QStringLiteral("user_auth_token"), user_auth_token())
|
||||
<< Param(FavoriteMethod(type), ids_list.join(QLatin1Char(',')));
|
||||
<< Param(FavoriteMethod(type), ids_list.join(u','));
|
||||
|
||||
QUrlQuery url_query;
|
||||
for (const Param ¶m : params) {
|
||||
@@ -229,7 +229,7 @@ void QobuzFavoriteRequest::RemoveFavoritesRequest(const FavoriteType type, const
|
||||
|
||||
const ParamList params = ParamList() << Param(QStringLiteral("app_id"), app_id())
|
||||
<< Param(QStringLiteral("user_auth_token"), user_auth_token())
|
||||
<< Param(FavoriteMethod(type), ids_list.join(QLatin1Char(',')));
|
||||
<< Param(FavoriteMethod(type), ids_list.join(u','));
|
||||
|
||||
QUrlQuery url_query;
|
||||
for (const Param ¶m : params) {
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
#include "qobuzbaserequest.h"
|
||||
#include "qobuzrequest.h"
|
||||
|
||||
using namespace Qt::StringLiterals;
|
||||
|
||||
namespace {
|
||||
constexpr int kMaxConcurrentArtistsRequests = 3;
|
||||
constexpr int kMaxConcurrentAlbumsRequests = 3;
|
||||
@@ -423,12 +425,12 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains(QLatin1String("artists"))) {
|
||||
if (!json_obj.contains("artists"_L1)) {
|
||||
ArtistsFinishCheck();
|
||||
Error(QStringLiteral("Json object is missing artists."), json_obj);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_artists = json_obj[QLatin1String("artists")];
|
||||
QJsonValue value_artists = json_obj["artists"_L1];
|
||||
if (!value_artists.isObject()) {
|
||||
Error(QStringLiteral("Json artists is not an object."), json_obj);
|
||||
ArtistsFinishCheck();
|
||||
@@ -436,17 +438,17 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||
}
|
||||
QJsonObject obj_artists = value_artists.toObject();
|
||||
|
||||
if (!obj_artists.contains(QLatin1String("limit")) ||
|
||||
!obj_artists.contains(QLatin1String("offset")) ||
|
||||
!obj_artists.contains(QLatin1String("total")) ||
|
||||
!obj_artists.contains(QLatin1String("items"))) {
|
||||
if (!obj_artists.contains("limit"_L1) ||
|
||||
!obj_artists.contains("offset"_L1) ||
|
||||
!obj_artists.contains("total"_L1) ||
|
||||
!obj_artists.contains("items"_L1)) {
|
||||
ArtistsFinishCheck();
|
||||
Error(QStringLiteral("Json artists object is missing values."), json_obj);
|
||||
return;
|
||||
}
|
||||
//int limit = obj_artists["limit"].toInt();
|
||||
int offset = obj_artists[QLatin1String("offset")].toInt();
|
||||
int artists_total = obj_artists[QLatin1String("total")].toInt();
|
||||
int offset = obj_artists["offset"_L1].toInt();
|
||||
int artists_total = obj_artists["total"_L1].toInt();
|
||||
|
||||
if (offset_requested == 0) {
|
||||
artists_total_ = artists_total;
|
||||
@@ -491,8 +493,8 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||
}
|
||||
QJsonObject obj_item = value_item.toObject();
|
||||
|
||||
if (obj_item.contains(QLatin1String("item"))) {
|
||||
QJsonValue json_item = obj_item[QLatin1String("item")];
|
||||
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);
|
||||
continue;
|
||||
@@ -500,19 +502,19 @@ void QobuzRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||
obj_item = json_item.toObject();
|
||||
}
|
||||
|
||||
if (!obj_item.contains(QLatin1String("id")) || !obj_item.contains(QLatin1String("name"))) {
|
||||
if (!obj_item.contains("id"_L1) || !obj_item.contains("name"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, item missing id or album."), obj_item);
|
||||
continue;
|
||||
}
|
||||
|
||||
Artist artist;
|
||||
if (obj_item[QLatin1String("id")].isString()) {
|
||||
artist.artist_id = obj_item[QLatin1String("id")].toString();
|
||||
if (obj_item["id"_L1].isString()) {
|
||||
artist.artist_id = obj_item["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
artist.artist_id = QString::number(obj_item[QLatin1String("id")].toInt());
|
||||
artist.artist_id = QString::number(obj_item["id"_L1].toInt());
|
||||
}
|
||||
artist.artist = obj_item[QLatin1String("name")].toString();
|
||||
artist.artist = obj_item["name"_L1].toString();
|
||||
|
||||
if (artist_albums_requests_pending_.contains(artist.artist_id)) continue;
|
||||
|
||||
@@ -636,14 +638,14 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||
|
||||
Artist artist = artist_requested;
|
||||
|
||||
if (json_obj.contains(QLatin1String("id")) && json_obj.contains(QLatin1String("name"))) {
|
||||
if (json_obj[QLatin1String("id")].isString()) {
|
||||
artist.artist_id = json_obj[QLatin1String("id")].toString();
|
||||
if (json_obj.contains("id"_L1) && json_obj.contains("name"_L1)) {
|
||||
if (json_obj["id"_L1].isString()) {
|
||||
artist.artist_id = json_obj["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
artist.artist_id = QString::number(json_obj[QLatin1String("id")].toInt());
|
||||
artist.artist_id = QString::number(json_obj["id"_L1].toInt());
|
||||
}
|
||||
artist.artist = json_obj[QLatin1String("name")].toString();
|
||||
artist.artist = json_obj["name"_L1].toString();
|
||||
}
|
||||
|
||||
if (artist.artist_id != artist_requested.artist_id) {
|
||||
@@ -652,12 +654,12 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains(QLatin1String("albums"))) {
|
||||
if (!json_obj.contains("albums"_L1)) {
|
||||
AlbumsFinishCheck(artist_requested);
|
||||
Error(QStringLiteral("Json object is missing albums."), json_obj);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_albums = json_obj[QLatin1String("albums")];
|
||||
QJsonValue value_albums = json_obj["albums"_L1];
|
||||
if (!value_albums.isObject()) {
|
||||
Error(QStringLiteral("Json albums is not an object."), json_obj);
|
||||
AlbumsFinishCheck(artist_requested);
|
||||
@@ -665,18 +667,18 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||
}
|
||||
QJsonObject obj_albums = value_albums.toObject();
|
||||
|
||||
if (!obj_albums.contains(QLatin1String("limit")) ||
|
||||
!obj_albums.contains(QLatin1String("offset")) ||
|
||||
!obj_albums.contains(QLatin1String("total")) ||
|
||||
!obj_albums.contains(QLatin1String("items"))) {
|
||||
if (!obj_albums.contains("limit"_L1) ||
|
||||
!obj_albums.contains("offset"_L1) ||
|
||||
!obj_albums.contains("total"_L1) ||
|
||||
!obj_albums.contains("items"_L1)) {
|
||||
AlbumsFinishCheck(artist_requested);
|
||||
Error(QStringLiteral("Json albums object is missing values."), json_obj);
|
||||
return;
|
||||
}
|
||||
|
||||
//int limit = obj_albums["limit"].toInt();
|
||||
int offset = obj_albums[QLatin1String("offset")].toInt();
|
||||
int albums_total = obj_albums[QLatin1String("total")].toInt();
|
||||
int offset = obj_albums["offset"_L1].toInt();
|
||||
int albums_total = obj_albums["total"_L1].toInt();
|
||||
|
||||
if (offset != offset_requested) {
|
||||
Error(QStringLiteral("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested));
|
||||
@@ -709,41 +711,41 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||
}
|
||||
QJsonObject obj_item = value_item.toObject();
|
||||
|
||||
if (!obj_item.contains(QLatin1String("artist")) || !obj_item.contains(QLatin1String("title")) || !obj_item.contains(QLatin1String("id"))) {
|
||||
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);
|
||||
continue;
|
||||
}
|
||||
|
||||
Album album;
|
||||
if (obj_item[QLatin1String("id")].isString()) {
|
||||
album.album_id = obj_item[QLatin1String("id")].toString();
|
||||
if (obj_item["id"_L1].isString()) {
|
||||
album.album_id = obj_item["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
album.album_id = QString::number(obj_item[QLatin1String("id")].toInt());
|
||||
album.album_id = QString::number(obj_item["id"_L1].toInt());
|
||||
}
|
||||
album.album = obj_item[QLatin1String("title")].toString();
|
||||
album.album = obj_item["title"_L1].toString();
|
||||
|
||||
if (album_songs_requests_pending_.contains(album.album_id)) continue;
|
||||
|
||||
QJsonValue value_artist = obj_item[QLatin1String("artist")];
|
||||
QJsonValue value_artist = obj_item["artist"_L1];
|
||||
if (!value_artist.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, item artist is not a object."), value_artist);
|
||||
continue;
|
||||
}
|
||||
QJsonObject obj_artist = value_artist.toObject();
|
||||
if (!obj_artist.contains(QLatin1String("id")) || !obj_artist.contains(QLatin1String("name"))) {
|
||||
if (!obj_artist.contains("id"_L1) || !obj_artist.contains("name"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, item artist missing id or name."), obj_artist);
|
||||
continue;
|
||||
}
|
||||
|
||||
Artist album_artist;
|
||||
if (obj_artist[QLatin1String("id")].isString()) {
|
||||
album_artist.artist_id = obj_artist[QLatin1String("id")].toString();
|
||||
if (obj_artist["id"_L1].isString()) {
|
||||
album_artist.artist_id = obj_artist["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
album_artist.artist_id = QString::number(obj_artist[QLatin1String("id")].toInt());
|
||||
album_artist.artist_id = QString::number(obj_artist["id"_L1].toInt());
|
||||
}
|
||||
album_artist.artist = obj_artist[QLatin1String("name")].toString();
|
||||
album_artist.artist = obj_artist["name"_L1].toString();
|
||||
|
||||
if (!artist_requested.artist_id.isEmpty() && album_artist.artist_id != artist_requested.artist_id) {
|
||||
qLog(Debug) << "Skipping artist" << album_artist.artist << album_artist.artist_id << "does not match album artist" << artist_requested.artist_id << artist_requested.artist;
|
||||
@@ -891,7 +893,7 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains(QLatin1String("tracks"))) {
|
||||
if (!json_obj.contains("tracks"_L1)) {
|
||||
Error(QStringLiteral("Json object is missing tracks."), json_obj);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
@@ -900,58 +902,58 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
Artist album_artist = artist_requested;
|
||||
Album album = album_requested;
|
||||
|
||||
if (json_obj.contains(QLatin1String("id")) && json_obj.contains(QLatin1String("title"))) {
|
||||
if (json_obj[QLatin1String("id")].isString()) {
|
||||
album.album_id = json_obj[QLatin1String("id")].toString();
|
||||
if (json_obj.contains("id"_L1) && json_obj.contains("title"_L1)) {
|
||||
if (json_obj["id"_L1].isString()) {
|
||||
album.album_id = json_obj["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
album.album_id = QString::number(json_obj[QLatin1String("id")].toInt());
|
||||
album.album_id = QString::number(json_obj["id"_L1].toInt());
|
||||
}
|
||||
album.album = json_obj[QLatin1String("title")].toString();
|
||||
album.album = json_obj["title"_L1].toString();
|
||||
}
|
||||
|
||||
if (json_obj.contains(QLatin1String("artist"))) {
|
||||
QJsonValue value_artist = json_obj[QLatin1String("artist")];
|
||||
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);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_artist = value_artist.toObject();
|
||||
if (!obj_artist.contains(QLatin1String("id")) || !obj_artist.contains(QLatin1String("name"))) {
|
||||
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);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
if (obj_artist[QLatin1String("id")].isString()) {
|
||||
album_artist.artist_id = obj_artist[QLatin1String("id")].toString();
|
||||
if (obj_artist["id"_L1].isString()) {
|
||||
album_artist.artist_id = obj_artist["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
album_artist.artist_id = QString::number(obj_artist[QLatin1String("id")].toInt());
|
||||
album_artist.artist_id = QString::number(obj_artist["id"_L1].toInt());
|
||||
}
|
||||
album_artist.artist = obj_artist[QLatin1String("name")].toString();
|
||||
album_artist.artist = obj_artist["name"_L1].toString();
|
||||
}
|
||||
|
||||
if (json_obj.contains(QLatin1String("image"))) {
|
||||
QJsonValue value_image = json_obj[QLatin1String("image")];
|
||||
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);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_image = value_image.toObject();
|
||||
if (!obj_image.contains(QLatin1String("large"))) {
|
||||
if (!obj_image.contains("large"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, album image is missing large."), obj_image);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
return;
|
||||
}
|
||||
QString album_image = obj_image[QLatin1String("large")].toString();
|
||||
QString album_image = obj_image["large"_L1].toString();
|
||||
if (!album_image.isEmpty()) {
|
||||
album.cover_url = QUrl(album_image);
|
||||
}
|
||||
}
|
||||
|
||||
QJsonValue value_tracks = json_obj[QLatin1String("tracks")];
|
||||
QJsonValue value_tracks = json_obj["tracks"_L1];
|
||||
if (!value_tracks.isObject()) {
|
||||
Error(QStringLiteral("Json tracks is not an object."), json_obj);
|
||||
SongsFinishCheck(artist_requested, album_requested, limit_requested, offset_requested);
|
||||
@@ -959,18 +961,18 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||
}
|
||||
QJsonObject obj_tracks = value_tracks.toObject();
|
||||
|
||||
if (!obj_tracks.contains(QLatin1String("limit")) ||
|
||||
!obj_tracks.contains(QLatin1String("offset")) ||
|
||||
!obj_tracks.contains(QLatin1String("total")) ||
|
||||
!obj_tracks.contains(QLatin1String("items"))) {
|
||||
if (!obj_tracks.contains("limit"_L1) ||
|
||||
!obj_tracks.contains("offset"_L1) ||
|
||||
!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);
|
||||
return;
|
||||
}
|
||||
|
||||
//int limit = obj_tracks["limit"].toInt();
|
||||
int offset = obj_tracks[QLatin1String("offset")].toInt();
|
||||
int songs_total = obj_tracks[QLatin1String("total")].toInt();
|
||||
int offset = obj_tracks["offset"_L1].toInt();
|
||||
int songs_total = obj_tracks["total"_L1].toInt();
|
||||
|
||||
if (offset != offset_requested) {
|
||||
Error(QStringLiteral("Offset returned does not match offset requested! %1 != %2").arg(offset).arg(offset_requested));
|
||||
@@ -1063,126 +1065,126 @@ void QobuzRequest::SongsFinishCheck(const Artist &artist, const Album &album, co
|
||||
void QobuzRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Artist &album_artist, const Album &album) {
|
||||
|
||||
if (
|
||||
!json_obj.contains(QLatin1String("id")) ||
|
||||
!json_obj.contains(QLatin1String("title")) ||
|
||||
!json_obj.contains(QLatin1String("track_number")) ||
|
||||
!json_obj.contains(QLatin1String("duration")) ||
|
||||
!json_obj.contains(QLatin1String("copyright")) ||
|
||||
!json_obj.contains(QLatin1String("streamable"))
|
||||
!json_obj.contains("id"_L1) ||
|
||||
!json_obj.contains("title"_L1) ||
|
||||
!json_obj.contains("track_number"_L1) ||
|
||||
!json_obj.contains("duration"_L1) ||
|
||||
!json_obj.contains("copyright"_L1) ||
|
||||
!json_obj.contains("streamable"_L1)
|
||||
) {
|
||||
Error(QStringLiteral("Invalid Json reply, track is missing one or more values."), json_obj);
|
||||
return;
|
||||
}
|
||||
|
||||
QString song_id;
|
||||
if (json_obj[QLatin1String("id")].isString()) {
|
||||
song_id = json_obj[QLatin1String("id")].toString();
|
||||
if (json_obj["id"_L1].isString()) {
|
||||
song_id = json_obj["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
song_id = QString::number(json_obj[QLatin1String("id")].toInt());
|
||||
song_id = QString::number(json_obj["id"_L1].toInt());
|
||||
}
|
||||
|
||||
QString title = json_obj[QLatin1String("title")].toString();
|
||||
int track = json_obj[QLatin1String("track_number")].toInt();
|
||||
QString title = json_obj["title"_L1].toString();
|
||||
int track = json_obj["track_number"_L1].toInt();
|
||||
int disc = 0;
|
||||
QString copyright = json_obj[QLatin1String("copyright")].toString();
|
||||
qint64 duration = json_obj[QLatin1String("duration")].toInt() * kNsecPerSec;
|
||||
QString copyright = json_obj["copyright"_L1].toString();
|
||||
qint64 duration = json_obj["duration"_L1].toInt() * kNsecPerSec;
|
||||
//bool streamable = json_obj["streamable"].toBool();
|
||||
QString composer;
|
||||
QString performer;
|
||||
|
||||
if (json_obj.contains(QLatin1String("media_number"))) {
|
||||
disc = json_obj[QLatin1String("media_number")].toInt();
|
||||
if (json_obj.contains("media_number"_L1)) {
|
||||
disc = json_obj["media_number"_L1].toInt();
|
||||
}
|
||||
|
||||
Artist song_artist = album_artist;
|
||||
Album song_album = album;
|
||||
if (json_obj.contains(QLatin1String("album"))) {
|
||||
if (json_obj.contains("album"_L1)) {
|
||||
|
||||
QJsonValue value_album = json_obj[QLatin1String("album")];
|
||||
QJsonValue value_album = json_obj["album"_L1];
|
||||
if (!value_album.isObject()) {
|
||||
Error(QStringLiteral("Invalid Json reply, album is not an object."), value_album);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_album = value_album.toObject();
|
||||
|
||||
if (obj_album.contains(QLatin1String("id"))) {
|
||||
if (obj_album[QLatin1String("id")].isString()) {
|
||||
song_album.album_id = obj_album[QLatin1String("id")].toString();
|
||||
if (obj_album.contains("id"_L1)) {
|
||||
if (obj_album["id"_L1].isString()) {
|
||||
song_album.album_id = obj_album["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
song_album.album_id = QString::number(obj_album[QLatin1String("id")].toInt());
|
||||
song_album.album_id = QString::number(obj_album["id"_L1].toInt());
|
||||
}
|
||||
}
|
||||
|
||||
if (obj_album.contains(QLatin1String("title"))) {
|
||||
song_album.album = obj_album[QLatin1String("title")].toString();
|
||||
if (obj_album.contains("title"_L1)) {
|
||||
song_album.album = obj_album["title"_L1].toString();
|
||||
}
|
||||
|
||||
if (obj_album.contains(QLatin1String("artist"))) {
|
||||
QJsonValue value_artist = obj_album[QLatin1String("artist")];
|
||||
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);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_artist = value_artist.toObject();
|
||||
if (!obj_artist.contains(QLatin1String("id")) || !obj_artist.contains(QLatin1String("name"))) {
|
||||
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);
|
||||
return;
|
||||
}
|
||||
if (obj_artist[QLatin1String("id")].isString()) {
|
||||
song_artist.artist_id = obj_artist[QLatin1String("id")].toString();
|
||||
if (obj_artist["id"_L1].isString()) {
|
||||
song_artist.artist_id = obj_artist["id"_L1].toString();
|
||||
}
|
||||
else {
|
||||
song_artist.artist_id = QString::number(obj_artist[QLatin1String("id")].toInt());
|
||||
song_artist.artist_id = QString::number(obj_artist["id"_L1].toInt());
|
||||
}
|
||||
song_artist.artist = obj_artist[QLatin1String("name")].toString();
|
||||
song_artist.artist = obj_artist["name"_L1].toString();
|
||||
}
|
||||
|
||||
if (obj_album.contains(QLatin1String("image"))) {
|
||||
QJsonValue value_image = obj_album[QLatin1String("image")];
|
||||
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);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_image = value_image.toObject();
|
||||
if (!obj_image.contains(QLatin1String("large"))) {
|
||||
if (!obj_image.contains("large"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, album image is missing large."), obj_image);
|
||||
return;
|
||||
}
|
||||
QString album_image = obj_image[QLatin1String("large")].toString();
|
||||
QString album_image = obj_image["large"_L1].toString();
|
||||
if (!album_image.isEmpty()) {
|
||||
song_album.cover_url.setUrl(album_image);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (json_obj.contains(QLatin1String("composer"))) {
|
||||
QJsonValue value_composer = json_obj[QLatin1String("composer")];
|
||||
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);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_composer = value_composer.toObject();
|
||||
if (!obj_composer.contains(QLatin1String("id")) || !obj_composer.contains(QLatin1String("name"))) {
|
||||
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);
|
||||
return;
|
||||
}
|
||||
composer = obj_composer[QLatin1String("name")].toString();
|
||||
composer = obj_composer["name"_L1].toString();
|
||||
}
|
||||
|
||||
if (json_obj.contains(QLatin1String("performer"))) {
|
||||
QJsonValue value_performer = json_obj[QLatin1String("performer")];
|
||||
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);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_performer = value_performer.toObject();
|
||||
if (!obj_performer.contains(QLatin1String("id")) || !obj_performer.contains(QLatin1String("name"))) {
|
||||
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);
|
||||
return;
|
||||
}
|
||||
performer = obj_performer[QLatin1String("name")].toString();
|
||||
performer = obj_performer["name"_L1].toString();
|
||||
}
|
||||
|
||||
//if (!streamable) {
|
||||
@@ -1345,8 +1347,8 @@ void QobuzRequest::AlbumCoverReceived(QNetworkReply *reply, const QUrl &cover_ur
|
||||
}
|
||||
|
||||
QString mimetype = reply->header(QNetworkRequest::ContentTypeHeader).toString();
|
||||
if (mimetype.contains(QLatin1Char(';'))) {
|
||||
mimetype = mimetype.left(mimetype.indexOf(QLatin1Char(';')));
|
||||
if (mimetype.contains(u';')) {
|
||||
mimetype = mimetype.left(mimetype.indexOf(u';'));
|
||||
}
|
||||
if (!ImageUtils::SupportedImageMimeTypes().contains(mimetype, Qt::CaseInsensitive) && !ImageUtils::SupportedImageFormats().contains(mimetype, Qt::CaseInsensitive)) {
|
||||
Error(QStringLiteral("Unsupported mimetype for image reader %1 for %2").arg(mimetype, cover_url.toString()));
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
#include "settings/settingsdialog.h"
|
||||
#include "settings/qobuzsettingspage.h"
|
||||
|
||||
using namespace Qt::StringLiterals;
|
||||
using std::make_shared;
|
||||
|
||||
const Song::Source QobuzService::kSource = Song::Source::Qobuz;
|
||||
@@ -330,9 +331,9 @@ void QobuzService::HandleAuthReply(QNetworkReply *reply) {
|
||||
QJsonDocument json_doc = QJsonDocument::fromJson(data, &json_error);
|
||||
if (json_error.error == QJsonParseError::NoError && !json_doc.isEmpty() && json_doc.isObject()) {
|
||||
QJsonObject json_obj = json_doc.object();
|
||||
if (!json_obj.isEmpty() && json_obj.contains(QLatin1String("status")) && json_obj.contains(QLatin1String("code")) && json_obj.contains(QLatin1String("message"))) {
|
||||
int code = json_obj[QLatin1String("code")].toInt();
|
||||
QString message = json_obj[QLatin1String("message")].toString();
|
||||
if (!json_obj.isEmpty() && json_obj.contains("status"_L1) && json_obj.contains("code"_L1) && json_obj.contains("message"_L1)) {
|
||||
int code = json_obj["code"_L1].toInt();
|
||||
QString message = json_obj["message"_L1].toString();
|
||||
login_errors_ << QStringLiteral("%1 (%2)").arg(message).arg(code);
|
||||
}
|
||||
}
|
||||
@@ -376,62 +377,62 @@ void QobuzService::HandleAuthReply(QNetworkReply *reply) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains(QLatin1String("user_auth_token"))) {
|
||||
if (!json_obj.contains("user_auth_token"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user_auth_token"), json_obj);
|
||||
return;
|
||||
}
|
||||
user_auth_token_ = json_obj[QLatin1String("user_auth_token")].toString();
|
||||
user_auth_token_ = json_obj["user_auth_token"_L1].toString();
|
||||
|
||||
if (!json_obj.contains(QLatin1String("user"))) {
|
||||
if (!json_obj.contains("user"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user"), json_obj);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_user = json_obj[QLatin1String("user")];
|
||||
QJsonValue value_user = json_obj["user"_L1];
|
||||
if (!value_user.isObject()) {
|
||||
LoginError(QStringLiteral("Authentication reply user is not a object"), json_obj);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_user = value_user.toObject();
|
||||
|
||||
if (!obj_user.contains(QLatin1String("id"))) {
|
||||
if (!obj_user.contains("id"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user id"), obj_user);
|
||||
return;
|
||||
}
|
||||
user_id_ = obj_user[QLatin1String("id")].toInt();
|
||||
user_id_ = obj_user["id"_L1].toInt();
|
||||
|
||||
if (!obj_user.contains(QLatin1String("device"))) {
|
||||
if (!obj_user.contains("device"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user device"), obj_user);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_device = obj_user[QLatin1String("device")];
|
||||
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);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_device = value_device.toObject();
|
||||
|
||||
if (!obj_device.contains(QLatin1String("device_manufacturer_id"))) {
|
||||
if (!obj_device.contains("device_manufacturer_id"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server device is missing device_manufacturer_id"), obj_device);
|
||||
return;
|
||||
}
|
||||
device_id_ = obj_device[QLatin1String("device_manufacturer_id")].toString();
|
||||
device_id_ = obj_device["device_manufacturer_id"_L1].toString();
|
||||
|
||||
if (!obj_user.contains(QLatin1String("credential"))) {
|
||||
if (!obj_user.contains("credential"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply from server is missing user credential"), obj_user);
|
||||
return;
|
||||
}
|
||||
QJsonValue value_credential = obj_user[QLatin1String("credential")];
|
||||
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);
|
||||
return;
|
||||
}
|
||||
QJsonObject obj_credential = value_credential.toObject();
|
||||
|
||||
if (!obj_credential.contains(QLatin1String("id"))) {
|
||||
if (!obj_credential.contains("id"_L1)) {
|
||||
LoginError(QStringLiteral("Authentication reply user credential from server is missing user credential id"), obj_credential);
|
||||
return;
|
||||
}
|
||||
credential_id_ = obj_credential[QLatin1String("id")].toInt();
|
||||
credential_id_ = obj_credential["id"_L1].toInt();
|
||||
|
||||
Settings s;
|
||||
s.beginGroup(QobuzSettingsPage::kSettingsGroup);
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
#include "qobuzbaserequest.h"
|
||||
#include "qobuzstreamurlrequest.h"
|
||||
|
||||
using namespace Qt::StringLiterals;
|
||||
|
||||
QobuzStreamURLRequest::QobuzStreamURLRequest(QobuzService *service, SharedPtr<NetworkAccessManager> network, const QUrl &media_url, const uint id, QObject *parent)
|
||||
: QobuzBaseRequest(service, network, parent),
|
||||
service_(service),
|
||||
@@ -122,7 +124,7 @@ void QobuzStreamURLRequest::GetStreamURL() {
|
||||
std::sort(params_to_sign.begin(), params_to_sign.end());
|
||||
|
||||
QString data_to_sign;
|
||||
data_to_sign += QLatin1String("trackgetFileUrl");
|
||||
data_to_sign += "trackgetFileUrl"_L1;
|
||||
for (const Param ¶m : std::as_const(params_to_sign)) {
|
||||
data_to_sign += param.first + param.second;
|
||||
}
|
||||
@@ -130,7 +132,7 @@ void QobuzStreamURLRequest::GetStreamURL() {
|
||||
data_to_sign += app_secret();
|
||||
|
||||
QByteArray const digest = QCryptographicHash::hash(data_to_sign.toUtf8(), QCryptographicHash::Md5);
|
||||
const QString signature = QString::fromLatin1(digest.toHex()).rightJustified(32, QLatin1Char('0')).toLower();
|
||||
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));
|
||||
@@ -169,27 +171,27 @@ void QobuzStreamURLRequest::StreamURLReceived() {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains(QLatin1String("track_id"))) {
|
||||
if (!json_obj.contains("track_id"_L1)) {
|
||||
Error(QStringLiteral("Invalid Json reply, stream url is missing track_id."), json_obj);
|
||||
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
|
||||
return;
|
||||
}
|
||||
|
||||
int track_id = json_obj[QLatin1String("track_id")].toInt();
|
||||
int track_id = json_obj["track_id"_L1].toInt();
|
||||
if (track_id != song_id_) {
|
||||
Error(QStringLiteral("Incorrect track ID returned."), json_obj);
|
||||
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
|
||||
return;
|
||||
}
|
||||
|
||||
if (!json_obj.contains(QLatin1String("mime_type")) || !json_obj.contains(QLatin1String("url"))) {
|
||||
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);
|
||||
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
|
||||
return;
|
||||
}
|
||||
|
||||
QUrl url(json_obj[QLatin1String("url")].toString());
|
||||
QString mimetype = json_obj[QLatin1String("mime_type")].toString();
|
||||
QUrl url(json_obj["url"_L1].toString());
|
||||
QString mimetype = json_obj["mime_type"_L1].toString();
|
||||
|
||||
Song::FileType filetype(Song::FileType::Unknown);
|
||||
QMimeDatabase mimedb;
|
||||
@@ -210,16 +212,16 @@ void QobuzStreamURLRequest::StreamURLReceived() {
|
||||
}
|
||||
|
||||
qint64 duration = -1;
|
||||
if (json_obj.contains(QLatin1String("duration"))) {
|
||||
duration = json_obj[QLatin1String("duration")].toInt() * kNsecPerSec;
|
||||
if (json_obj.contains("duration"_L1)) {
|
||||
duration = json_obj["duration"_L1].toInt() * kNsecPerSec;
|
||||
}
|
||||
int samplerate = -1;
|
||||
if (json_obj.contains(QLatin1String("sampling_rate"))) {
|
||||
samplerate = static_cast<int>(json_obj[QLatin1String("sampling_rate")].toDouble()) * 1000;
|
||||
if (json_obj.contains("sampling_rate"_L1)) {
|
||||
samplerate = static_cast<int>(json_obj["sampling_rate"_L1].toDouble()) * 1000;
|
||||
}
|
||||
int bit_depth = -1;
|
||||
if (json_obj.contains(QLatin1String("bit_depth"))) {
|
||||
bit_depth = static_cast<int>(json_obj[QLatin1String("bit_depth")].toDouble());
|
||||
if (json_obj.contains("bit_depth"_L1)) {
|
||||
bit_depth = static_cast<int>(json_obj["bit_depth"_L1].toDouble());
|
||||
}
|
||||
|
||||
Q_EMIT StreamURLSuccess(id_, media_url_, url, filetype, samplerate, bit_depth, duration);
|
||||
|
||||
Reference in New Issue
Block a user