Port to QStringLiteral operator

This commit is contained in:
Jonas Kvinge
2024-10-20 06:38:55 +02:00
parent 722035913e
commit ef9ef63f02
202 changed files with 2036 additions and 1889 deletions

View File

@@ -50,7 +50,7 @@ TidalBaseRequest::TidalBaseRequest(TidalService *service, SharedPtr<NetworkAcces
QNetworkReply *TidalBaseRequest::CreateRequest(const QString &ressource_name, const ParamList &params_provided) {
const ParamList params = ParamList() << params_provided
<< Param(QStringLiteral("countryCode"), country_code());
<< Param(u"countryCode"_s, country_code());
QUrlQuery url_query;
for (const Param &param : params) {
@@ -61,7 +61,7 @@ QNetworkReply *TidalBaseRequest::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);
if (oauth() && !access_token().isEmpty()) req.setRawHeader("authorization", "Bearer " + access_token().toUtf8());
else if (!session_id().isEmpty()) req.setRawHeader("X-Tidal-SessionId", session_id().toUtf8());
@@ -153,23 +153,23 @@ QJsonObject TidalBaseRequest::ExtractJsonObj(const 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();
}
@@ -188,7 +188,7 @@ QJsonValue TidalBaseRequest::ExtractItems(const QByteArray &data) {
QJsonValue TidalBaseRequest::ExtractItems(const 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];

View File

@@ -62,11 +62,11 @@ QString TidalFavoriteRequest::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:
return QStringLiteral("tracks");
return u"tracks"_s;
}
return QString();
@@ -77,11 +77,11 @@ QString TidalFavoriteRequest::FavoriteMethod(const FavoriteType type) {
switch (type) {
case FavoriteType::Artists:
return QStringLiteral("artistIds");
return u"artistIds"_s;
case FavoriteType::Albums:
return QStringLiteral("albumIds");
return u"albumIds"_s;
case FavoriteType::Songs:
return QStringLiteral("trackIds");
return u"trackIds"_s;
}
return QString();
@@ -136,7 +136,7 @@ void TidalFavoriteRequest::AddFavorites(const FavoriteType type, const SongList
void TidalFavoriteRequest::AddFavoritesRequest(const FavoriteType type, const QStringList &id_list, const SongList &songs) {
const ParamList params = ParamList() << Param(QStringLiteral("countryCode"), country_code())
const ParamList params = ParamList() << Param(u"countryCode"_s, country_code())
<< Param(FavoriteMethod(type), id_list.join(u','));
QUrlQuery url_query;
@@ -147,7 +147,7 @@ void TidalFavoriteRequest::AddFavoritesRequest(const FavoriteType type, const QS
QUrl url(QLatin1String(TidalService::kApiUrl) + QLatin1Char('/') + "users/"_L1 + QString::number(service_->user_id()) + "/favorites/"_L1 + FavoriteText(type));
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);
if (oauth() && !access_token().isEmpty()) req.setRawHeader("authorization", "Bearer " + access_token().toUtf8());
else if (!session_id().isEmpty()) req.setRawHeader("X-Tidal-SessionId", session_id().toUtf8());
QByteArray query = url_query.toString(QUrl::FullyEncoded).toUtf8();
@@ -246,7 +246,7 @@ void TidalFavoriteRequest::RemoveFavorites(const FavoriteType type, const SongLi
void TidalFavoriteRequest::RemoveFavoritesRequest(const FavoriteType type, const QString &id, const SongList &songs) {
const ParamList params = ParamList() << Param(QStringLiteral("countryCode"), country_code());
const ParamList params = ParamList() << Param(u"countryCode"_s, country_code());
QUrlQuery url_query;
for (const Param &param : params) {
@@ -257,7 +257,7 @@ void TidalFavoriteRequest::RemoveFavoritesRequest(const FavoriteType type, const
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);
if (oauth() && !access_token().isEmpty()) req.setRawHeader("authorization", "Bearer " + access_token().toUtf8());
else if (!session_id().isEmpty()) req.setRawHeader("X-Tidal-SessionId", session_id().toUtf8());
QNetworkReply *reply = network_->deleteResource(req);

View File

@@ -171,7 +171,7 @@ void TidalRequest::Process() {
SongsSearch();
break;
default:
Error(QStringLiteral("Invalid query type."));
Error(u"Invalid query type."_s);
break;
}
@@ -254,15 +254,15 @@ void TidalRequest::FlushArtistsRequests() {
Request request = artists_requests_queue_.dequeue();
ParamList parameters;
if (query_type_ == Type::SearchArtists) parameters << Param(QStringLiteral("query"), search_text_);
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
if (query_type_ == Type::SearchArtists) parameters << Param(u"query"_s, search_text_);
if (request.limit > 0) parameters << Param(u"limit"_s, QString::number(request.limit));
if (request.offset > 0) parameters << Param(u"offset"_s, QString::number(request.offset));
QNetworkReply *reply = nullptr;
if (query_type_ == Type::FavouriteArtists) {
reply = CreateRequest(QStringLiteral("users/%1/favorites/artists").arg(service_->user_id()), parameters);
}
if (query_type_ == Type::SearchArtists) {
reply = CreateRequest(QStringLiteral("search/artists"), parameters);
reply = CreateRequest(u"search/artists"_s, parameters);
}
if (!reply) continue;
replies_ << reply;
@@ -302,15 +302,15 @@ void TidalRequest::FlushAlbumsRequests() {
Request request = albums_requests_queue_.dequeue();
ParamList parameters;
if (query_type_ == Type::SearchAlbums) parameters << Param(QStringLiteral("query"), search_text_);
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
if (query_type_ == Type::SearchAlbums) parameters << Param(u"query"_s, search_text_);
if (request.limit > 0) parameters << Param(u"limit"_s, QString::number(request.limit));
if (request.offset > 0) parameters << Param(u"offset"_s, QString::number(request.offset));
QNetworkReply *reply = nullptr;
if (query_type_ == Type::FavouriteAlbums) {
reply = CreateRequest(QStringLiteral("users/%1/favorites/albums").arg(service_->user_id()), parameters);
}
if (query_type_ == Type::SearchAlbums) {
reply = CreateRequest(QStringLiteral("search/albums"), parameters);
reply = CreateRequest(u"search/albums"_s, parameters);
}
if (!reply) continue;
replies_ << reply;
@@ -350,15 +350,15 @@ void TidalRequest::FlushSongsRequests() {
Request request = songs_requests_queue_.dequeue();
ParamList parameters;
if (query_type_ == Type::SearchSongs) parameters << Param(QStringLiteral("query"), search_text_);
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
if (query_type_ == Type::SearchSongs) parameters << Param(u"query"_s, search_text_);
if (request.limit > 0) parameters << Param(u"limit"_s, QString::number(request.limit));
if (request.offset > 0) parameters << Param(u"offset"_s, QString::number(request.offset));
QNetworkReply *reply = nullptr;
if (query_type_ == Type::FavouriteSongs) {
reply = CreateRequest(QStringLiteral("users/%1/favorites/tracks").arg(service_->user_id()), parameters);
}
if (query_type_ == Type::SearchSongs) {
reply = CreateRequest(QStringLiteral("search/tracks"), parameters);
reply = CreateRequest(u"search/tracks"_s, parameters);
}
if (!reply) continue;
replies_ << reply;
@@ -441,7 +441,7 @@ void TidalRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
!json_obj.contains("offset"_L1) ||
!json_obj.contains("totalNumberOfItems"_L1) ||
!json_obj.contains("items"_L1)) {
Error(QStringLiteral("Json object missing values."), json_obj);
Error(u"Json object missing values."_s, json_obj);
ArtistsFinishCheck();
return;
}
@@ -486,7 +486,7 @@ void TidalRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_re
++artists_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();
@@ -494,14 +494,14 @@ void TidalRequest::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 in array is not a object."), json_item);
Error(u"Invalid Json reply, item in array is 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;
}
@@ -590,7 +590,7 @@ void TidalRequest::FlushArtistAlbumsRequests() {
const ArtistAlbumsRequest request = artist_albums_requests_queue_.dequeue();
ParamList parameters;
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
if (request.offset > 0) parameters << Param(u"offset"_s, QString::number(request.offset));
QNetworkReply *reply = CreateRequest(QStringLiteral("artists/%1/albums").arg(request.artist.artist_id), parameters);
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { ArtistAlbumsReplyReceived(reply, request.artist, request.offset); });
replies_ << reply;
@@ -636,7 +636,7 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
!json_obj.contains("offset"_L1) ||
!json_obj.contains("totalNumberOfItems"_L1) ||
!json_obj.contains("items"_L1)) {
Error(QStringLiteral("Json object missing values."), json_obj);
Error(u"Json object missing values."_s, json_obj);
AlbumsFinishCheck(artist_requested);
return;
}
@@ -668,7 +668,7 @@ void TidalRequest::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();
@@ -676,7 +676,7 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
if (obj_item.contains("item"_L1)) {
QJsonValue json_item = obj_item["item"_L1];
if (!json_item.isObject()) {
Error(QStringLiteral("Invalid Json reply, item in array is not a object."), json_item);
Error(u"Invalid Json reply, item in array is not a object."_s, json_item);
continue;
}
obj_item = json_item.toObject();
@@ -685,7 +685,7 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
Album album;
if (obj_item.contains("type"_L1)) { // This was an albums request or search
if (!obj_item.contains("id"_L1) || !obj_item.contains("title"_L1)) {
Error(QStringLiteral("Invalid Json reply, item is missing ID or title."), obj_item);
Error(u"Invalid Json reply, item is missing ID or title."_s, obj_item);
continue;
}
if (obj_item["id"_L1].isString()) {
@@ -705,12 +705,12 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
else if (obj_item.contains("album"_L1)) { // This was a tracks request or search
QJsonValue value_album = obj_item["album"_L1];
if (!value_album.isObject()) {
Error(QStringLiteral("Invalid Json reply, item album is not a object."), value_album);
Error(u"Invalid Json reply, item album is not a object."_s, value_album);
continue;
}
QJsonObject obj_album = value_album.toObject();
if (!obj_album.contains("id"_L1) || !obj_album.contains("title"_L1)) {
Error(QStringLiteral("Invalid Json reply, item album is missing ID or title."), obj_album);
Error(u"Invalid Json reply, item album is missing ID or title."_s, obj_album);
continue;
}
if (obj_album["id"_L1].isString()) {
@@ -728,24 +728,24 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
}
}
else {
Error(QStringLiteral("Invalid Json reply, item missing type or album."), obj_item);
Error(u"Invalid Json reply, item missing type or album."_s, obj_item);
continue;
}
if (album_songs_requests_pending_.contains(album.album_id)) continue;
if (!obj_item.contains("artist"_L1) || !obj_item.contains("title"_L1) || !obj_item.contains("audioQuality"_L1)) {
Error(QStringLiteral("Invalid Json reply, item missing artist, title or audioQuality."), obj_item);
Error(u"Invalid Json reply, item missing artist, title or audioQuality."_s, obj_item);
continue;
}
QJsonValue value_artist = obj_item["artist"_L1];
if (!value_artist.isObject()) {
Error(QStringLiteral("Invalid Json reply, item artist is not a object."), value_artist);
Error(u"Invalid Json reply, item artist is not a object."_s, value_artist);
continue;
}
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;
}
@@ -865,7 +865,7 @@ void TidalRequest::FlushAlbumSongsRequests() {
AlbumSongsRequest request = album_songs_requests_queue_.dequeue();
ParamList parameters;
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
if (request.offset > 0) parameters << Param(u"offset"_s, QString::number(request.offset));
QNetworkReply *reply = CreateRequest(QStringLiteral("albums/%1/tracks").arg(request.album.album_id), parameters);
replies_ << reply;
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumSongsReplyReceived(reply, request.artist, request.album, request.offset); });
@@ -913,7 +913,7 @@ void TidalRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, con
!json_obj.contains("offset"_L1) ||
!json_obj.contains("totalNumberOfItems"_L1) ||
!json_obj.contains("items"_L1)) {
Error(QStringLiteral("Json object missing values."), json_obj);
Error(u"Json object missing values."_s, json_obj);
SongsFinishCheck(artist, album, limit_requested, offset_requested);
return;
}
@@ -947,7 +947,7 @@ void TidalRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, con
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();
@@ -955,7 +955,7 @@ void TidalRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, con
if (obj_item.contains("item"_L1)) {
QJsonValue item = obj_item["item"_L1];
if (!item.isObject()) {
Error(QStringLiteral("Invalid Json reply, item is not a object."), item);
Error(u"Invalid Json reply, item is not a object."_s, item);
continue;
}
obj_item = item.toObject();
@@ -1037,7 +1037,7 @@ void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
!json_obj.contains("volumeNumber"_L1) ||
!json_obj.contains("copyright"_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;
}
@@ -1063,12 +1063,12 @@ void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
QString copyright = json_obj["copyright"_L1].toString();
if (!value_artist.isObject()) {
Error(QStringLiteral("Invalid Json reply, track artist is not a object."), value_artist);
Error(u"Invalid Json reply, track 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, track artist is missing id or name."), obj_artist);
Error(u"Invalid Json reply, track artist is missing id or name."_s, obj_artist);
return;
}
QString artist_id;
@@ -1081,12 +1081,12 @@ void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
QString artist = obj_artist["name"_L1].toString();
if (!value_album.isObject()) {
Error(QStringLiteral("Invalid Json reply, track album is not a object."), value_album);
Error(u"Invalid Json reply, track album is not a object."_s, value_album);
return;
}
QJsonObject obj_album = value_album.toObject();
if (!obj_album.contains("id"_L1) || !obj_album.contains("title"_L1)) {
Error(QStringLiteral("Invalid Json reply, track album is missing ID or title."), obj_album);
Error(u"Invalid Json reply, track album is missing ID or title."_s, obj_album);
return;
}
QString album_id;
@@ -1097,7 +1097,7 @@ void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
album_id = QString::number(obj_album["id"_L1].toInt());
}
if (!album.album_id.isEmpty() && album.album_id != album_id) {
Error(QStringLiteral("Invalid Json reply, track album id is wrong."), obj_album);
Error(u"Invalid Json reply, track album id is wrong."_s, obj_album);
return;
}
QString album_title = obj_album["title"_L1].toString();
@@ -1123,7 +1123,7 @@ void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
duration = q_duration.toLongLong() * kNsecPerSec;
}
else {
Error(QStringLiteral("Invalid duration for song."), json_duration);
Error(u"Invalid duration for song."_s, json_duration);
return;
}

View File

@@ -55,7 +55,6 @@
#include "streaming/streamingsearchview.h"
#include "collection/collectionbackend.h"
#include "collection/collectionmodel.h"
#include "collection/collectionfilter.h"
#include "tidalservice.h"
#include "tidalurlhandler.h"
#include "tidalbaserequest.h"
@@ -91,7 +90,7 @@ constexpr char kSongsTable[] = "tidal_songs";
} // namespace
TidalService::TidalService(Application *app, QObject *parent)
: StreamingService(Song::Source::Tidal, QStringLiteral("Tidal"), QStringLiteral("tidal"), QLatin1String(TidalSettingsPage::kSettingsGroup), SettingsDialog::Page::Tidal, app, parent),
: StreamingService(Song::Source::Tidal, u"Tidal"_s, u"tidal"_s, QLatin1String(TidalSettingsPage::kSettingsGroup), SettingsDialog::Page::Tidal, app, parent),
app_(app),
network_(app->network()),
url_handler_(new TidalUrlHandler(app, this)),
@@ -234,7 +233,7 @@ void TidalService::LoadSession() {
Settings s;
s.beginGroup(TidalSettingsPage::kSettingsGroup);
user_id_ = s.value("user_id").toInt();
country_code_ = s.value("country_code", QStringLiteral("US")).toString();
country_code_ = s.value("country_code", u"US"_s).toString();
access_token_ = s.value("access_token").toString();
refresh_token_ = s.value("refresh_token").toString();
session_id_ = s.value("session_id").toString();
@@ -270,13 +269,13 @@ void TidalService::ReloadSettings() {
if (password.isEmpty()) password_.clear();
else password_ = QString::fromUtf8(QByteArray::fromBase64(password));
quality_ = s.value("quality", QStringLiteral("LOSSLESS")).toString();
quality_ = s.value("quality", u"LOSSLESS"_s).toString();
quint64 search_delay = s.value("searchdelay", 1500).toInt();
artistssearchlimit_ = s.value("artistssearchlimit", 4).toInt();
albumssearchlimit_ = s.value("albumssearchlimit", 10).toInt();
songssearchlimit_ = s.value("songssearchlimit", 10).toInt();
fetchalbums_ = s.value("fetchalbums", false).toBool();
coversize_ = s.value("coversize", QStringLiteral("640x640")).toString();
coversize_ = s.value("coversize", u"640x640"_s).toString();
download_album_covers_ = s.value("downloadalbumcovers", true).toBool();
stream_url_method_ = static_cast<TidalSettingsPage::StreamUrlMethod>(s.value("streamurl", static_cast<int>(TidalSettingsPage::StreamUrlMethod::StreamUrl)).toInt());
album_explicit_ = s.value("album_explicit").toBool();
@@ -297,12 +296,12 @@ void TidalService::StartAuthorization(const QString &client_id) {
code_challenge_.chop(1);
}
const ParamList params = ParamList() << Param(QStringLiteral("response_type"), QStringLiteral("code"))
<< Param(QStringLiteral("code_challenge"), code_challenge_)
<< Param(QStringLiteral("code_challenge_method"), QStringLiteral("S256"))
<< Param(QStringLiteral("redirect_uri"), QLatin1String(kOAuthRedirectUrl))
<< Param(QStringLiteral("client_id"), client_id_)
<< Param(QStringLiteral("scope"), QStringLiteral("r_usr w_usr"));
const ParamList params = ParamList() << Param(u"response_type"_s, u"code"_s)
<< Param(u"code_challenge"_s, code_challenge_)
<< Param(u"code_challenge_method"_s, u"S256"_s)
<< Param(u"redirect_uri"_s, QLatin1String(kOAuthRedirectUrl))
<< Param(u"client_id"_s, client_id_)
<< Param(u"scope"_s, u"r_usr w_usr"_s);
QUrlQuery url_query;
for (const Param &param : params) {
@@ -321,13 +320,13 @@ void TidalService::AuthorizationUrlReceived(const QUrl &url) {
QUrlQuery url_query(url);
if (url_query.hasQueryItem(QStringLiteral("token_type")) && url_query.hasQueryItem(QStringLiteral("expires_in")) && url_query.hasQueryItem(QStringLiteral("access_token"))) {
if (url_query.hasQueryItem(u"token_type"_s) && url_query.hasQueryItem(u"expires_in"_s) && url_query.hasQueryItem(u"access_token"_s)) {
access_token_ = url_query.queryItemValue(QStringLiteral("access_token"));
if (url_query.hasQueryItem(QStringLiteral("refresh_token"))) {
refresh_token_ = url_query.queryItemValue(QStringLiteral("refresh_token"));
access_token_ = url_query.queryItemValue(u"access_token"_s);
if (url_query.hasQueryItem(u"refresh_token"_s)) {
refresh_token_ = url_query.queryItemValue(u"refresh_token"_s);
}
expires_in_ = url_query.queryItemValue(QStringLiteral("expires_in")).toInt();
expires_in_ = url_query.queryItemValue(u"expires_in"_s).toInt();
login_time_ = QDateTime::currentSecsSinceEpoch();
session_id_.clear();
@@ -344,9 +343,9 @@ void TidalService::AuthorizationUrlReceived(const QUrl &url) {
Q_EMIT LoginSuccess();
}
else if (url_query.hasQueryItem(QStringLiteral("code")) && url_query.hasQueryItem(QStringLiteral("state"))) {
else if (url_query.hasQueryItem(u"code"_s) && url_query.hasQueryItem(u"state"_s)) {
QString code = url_query.queryItemValue(QStringLiteral("code"));
QString code = url_query.queryItemValue(u"code"_s);
RequestAccessToken(code);
@@ -363,18 +362,18 @@ void TidalService::RequestAccessToken(const QString &code) {
timer_refresh_login_->stop();
ParamList params = ParamList() << Param(QStringLiteral("client_id"), client_id_);
ParamList params = ParamList() << Param(u"client_id"_s, client_id_);
if (!code.isEmpty()) {
params << Param(QStringLiteral("grant_type"), QStringLiteral("authorization_code"));
params << Param(QStringLiteral("code"), code);
params << Param(QStringLiteral("code_verifier"), code_verifier_);
params << Param(QStringLiteral("redirect_uri"), QLatin1String(kOAuthRedirectUrl));
params << Param(QStringLiteral("scope"), QStringLiteral("r_usr w_usr"));
params << Param(u"grant_type"_s, u"authorization_code"_s);
params << Param(u"code"_s, code);
params << Param(u"code_verifier"_s, code_verifier_);
params << Param(u"redirect_uri"_s, QLatin1String(kOAuthRedirectUrl));
params << Param(u"scope"_s, u"r_usr w_usr"_s);
}
else if (!refresh_token_.isEmpty() && enabled_ && oauth_) {
params << Param(QStringLiteral("grant_type"), QStringLiteral("refresh_token"));
params << Param(QStringLiteral("refresh_token"), refresh_token_);
params << Param(u"grant_type"_s, u"refresh_token"_s);
params << Param(u"refresh_token"_s, refresh_token_);
}
else {
return;
@@ -451,28 +450,28 @@ void TidalService::AccessTokenRequestFinished(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("access_token"_L1) || !json_obj.contains("expires_in"_L1)) {
LoginError(QStringLiteral("Authentication reply from server is missing access_token or expires_in"), json_obj);
LoginError(u"Authentication reply from server is missing access_token or expires_in"_s, json_obj);
return;
}
@@ -527,10 +526,10 @@ void TidalService::SendLoginWithCredentials(const QString &api_token, const QStr
timer_login_attempt_->start();
timer_refresh_login_->stop();
const ParamList params = ParamList() << Param(QStringLiteral("token"), (api_token.isEmpty() ? api_token_ : api_token))
<< Param(QStringLiteral("username"), username)
<< Param(QStringLiteral("password"), password)
<< Param(QStringLiteral("clientVersion"), QStringLiteral("2.2.1--7"));
const ParamList params = ParamList() << Param(u"token"_s, (api_token.isEmpty() ? api_token_ : api_token))
<< Param(u"username"_s, username)
<< Param(u"password"_s, password)
<< Param(u"clientVersion"_s, u"2.2.1--7"_s);
QUrlQuery url_query;
for (const Param &param : params) {
@@ -540,7 +539,7 @@ void TidalService::SendLoginWithCredentials(const QString &api_token, const QStr
QUrl url(QString::fromLatin1(kAuthUrl));
QNetworkRequest req(url);
req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded"));
req.setHeader(QNetworkRequest::ContentTypeHeader, u"application/x-www-form-urlencoded"_s);
req.setRawHeader("X-Tidal-Token", (api_token.isEmpty() ? api_token_.toUtf8() : api_token.toUtf8()));
QByteArray query = url_query.toString(QUrl::FullyEncoded).toUtf8();
@@ -604,28 +603,28 @@ void TidalService::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("userId"_L1) || !json_obj.contains("sessionId"_L1) || !json_obj.contains("countryCode"_L1)) {
LoginError(QStringLiteral("Authentication reply from server is missing userId, sessionId or countryCode"), json_obj);
LoginError(u"Authentication reply from server is missing userId, sessionId or countryCode"_s, json_obj);
return;
}

View File

@@ -123,22 +123,22 @@ void TidalStreamURLRequest::GetStreamURL() {
switch (stream_url_method()) {
case TidalSettingsPage::StreamUrlMethod::StreamUrl:
params << Param(QStringLiteral("soundQuality"), quality());
params << Param(u"soundQuality"_s, quality());
reply_ = CreateRequest(QStringLiteral("tracks/%1/streamUrl").arg(song_id_), params);
QObject::connect(reply_, &QNetworkReply::finished, this, &TidalStreamURLRequest::StreamURLReceived);
break;
case TidalSettingsPage::StreamUrlMethod::UrlPostPaywall:
params << Param(QStringLiteral("audioquality"), quality());
params << Param(QStringLiteral("playbackmode"), QStringLiteral("STREAM"));
params << Param(QStringLiteral("assetpresentation"), QStringLiteral("FULL"));
params << Param(QStringLiteral("urlusagemode"), QStringLiteral("STREAM"));
params << Param(u"audioquality"_s, quality());
params << Param(u"playbackmode"_s, u"STREAM"_s);
params << Param(u"assetpresentation"_s, u"FULL"_s);
params << Param(u"urlusagemode"_s, u"STREAM"_s);
reply_ = CreateRequest(QStringLiteral("tracks/%1/urlpostpaywall").arg(song_id_), params);
QObject::connect(reply_, &QNetworkReply::finished, this, &TidalStreamURLRequest::StreamURLReceived);
break;
case TidalSettingsPage::StreamUrlMethod::PlaybackInfoPostPaywall:
params << Param(QStringLiteral("audioquality"), quality());
params << Param(QStringLiteral("playbackmode"), QStringLiteral("STREAM"));
params << Param(QStringLiteral("assetpresentation"), QStringLiteral("FULL"));
params << Param(u"audioquality"_s, quality());
params << Param(u"playbackmode"_s, u"STREAM"_s);
params << Param(u"assetpresentation"_s, u"FULL"_s);
reply_ = CreateRequest(QStringLiteral("tracks/%1/playbackinfopostpaywall").arg(song_id_), params);
QObject::connect(reply_, &QNetworkReply::finished, this, &TidalStreamURLRequest::StreamURLReceived);
break;
@@ -172,7 +172,7 @@ void TidalStreamURLRequest::StreamURLReceived() {
}
if (!json_obj.contains("trackId"_L1)) {
Error(QStringLiteral("Invalid Json reply, stream missing trackId."), json_obj);
Error(u"Invalid Json reply, stream missing trackId."_s, json_obj);
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
return;
}
@@ -204,7 +204,7 @@ void TidalStreamURLRequest::StreamURLReceived() {
QXmlStreamReader xml_reader(data_manifest);
if (xml_reader.readNextStartElement()) {
QUrl url;
url.setScheme(QStringLiteral("data"));
url.setScheme(u"data"_s);
url.setPath(QStringLiteral("application/dash+xml;base64,%1").arg(manifest));
urls << url;
}
@@ -228,7 +228,7 @@ void TidalStreamURLRequest::StreamURLReceived() {
}
if (!json_obj.contains("mimeType"_L1)) {
Error(QStringLiteral("Invalid Json reply, stream url reply manifest is missing mimeType."), json_obj);
Error(u"Invalid Json reply, stream url reply manifest is missing mimeType."_s, json_obj);
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
return;
}
@@ -251,7 +251,7 @@ void TidalStreamURLRequest::StreamURLReceived() {
if (json_obj.contains("urls"_L1)) {
QJsonValue json_urls = json_obj["urls"_L1];
if (!json_urls.isArray()) {
Error(QStringLiteral("Invalid Json reply, urls is not an array."), json_urls);
Error(u"Invalid Json reply, urls is not an array."_s, json_urls);
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
return;
}
@@ -291,7 +291,7 @@ void TidalStreamURLRequest::StreamURLReceived() {
}
if (urls.isEmpty()) {
Error(QStringLiteral("Missing stream urls."), json_obj);
Error(u"Missing stream urls."_s, json_obj);
Q_EMIT StreamURLFailure(id_, media_url_, errors_.constFirst());
return;
}