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

@@ -57,7 +57,7 @@ QNetworkReply *SpotifyBaseRequest::CreateRequest(const QString &ressource_name,
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 (!access_token().isEmpty()) req.setRawHeader("authorization", "Bearer " + access_token().toUtf8());
QNetworkReply *reply = network_->get(req);
@@ -130,23 +130,23 @@ QJsonObject SpotifyBaseRequest::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();
}
@@ -165,7 +165,7 @@ QJsonValue SpotifyBaseRequest::ExtractItems(const QByteArray &data) {
QJsonValue SpotifyBaseRequest::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

@@ -42,6 +42,8 @@
#include "spotifybaserequest.h"
#include "spotifyfavoriterequest.h"
using namespace Qt::Literals::StringLiterals;
SpotifyFavoriteRequest::SpotifyFavoriteRequest(SpotifyService *service, NetworkAccessManager *network, QObject *parent)
: SpotifyBaseRequest(service, network, parent),
service_(service),
@@ -62,11 +64,11 @@ QString SpotifyFavoriteRequest::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();
@@ -127,16 +129,16 @@ void SpotifyFavoriteRequest::AddFavorites(const FavoriteType type, const SongLis
void SpotifyFavoriteRequest::AddFavoritesRequest(const FavoriteType type, const QString &ids_list, const QByteArray &json_data, const SongList &songs) {
QUrl url(QLatin1String(SpotifyService::kApiUrl) + (type == FavoriteType_Artists ? QStringLiteral("/me/following") : QStringLiteral("/me/") + FavoriteText(type)));
QUrl url(QLatin1String(SpotifyService::kApiUrl) + (type == FavoriteType_Artists ? u"/me/following"_s : u"/me/"_s + FavoriteText(type)));
if (type == FavoriteType_Artists) {
QUrlQuery url_query;
url_query.addQueryItem(QStringLiteral("type"), QStringLiteral("artist"));
url_query.addQueryItem(QStringLiteral("ids"), ids_list);
url_query.addQueryItem(u"type"_s, u"artist"_s);
url_query.addQueryItem(u"ids"_s, ids_list);
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 (!access_token().isEmpty()) req.setRawHeader("authorization", "Bearer " + access_token().toUtf8());
QNetworkReply *reply = nullptr;
if (type == FavoriteType_Artists) {
@@ -241,16 +243,16 @@ void SpotifyFavoriteRequest::RemoveFavoritesRequest(const FavoriteType type, con
Q_UNUSED(json_data)
QUrl url(QLatin1String(SpotifyService::kApiUrl) + (type == FavoriteType_Artists ? QStringLiteral("/me/following") : QStringLiteral("/me/") + FavoriteText(type)));
QUrl url(QLatin1String(SpotifyService::kApiUrl) + (type == FavoriteType_Artists ? u"/me/following"_s : u"/me/"_s + FavoriteText(type)));
if (type == FavoriteType_Artists) {
QUrlQuery url_query;
url_query.addQueryItem(QStringLiteral("type"), QStringLiteral("artist"));
url_query.addQueryItem(QStringLiteral("ids"), ids_list);
url_query.addQueryItem(u"type"_s, u"artist"_s);
url_query.addQueryItem(u"ids"_s, ids_list);
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 (!access_token().isEmpty()) req.setRawHeader("authorization", "Bearer " + access_token().toUtf8());
QNetworkReply *reply = nullptr;
if (type == FavoriteType_Artists) {

View File

@@ -152,7 +152,7 @@ void SpotifyRequest::Process() {
SongsSearch();
break;
default:
Error(QStringLiteral("Invalid query type."));
Error(u"Invalid query type."_s);
break;
}
@@ -236,22 +236,22 @@ void SpotifyRequest::FlushArtistsRequests() {
Request request = artists_requests_queue_.dequeue();
ParamList parameters = ParamList() << Param(QStringLiteral("type"), QStringLiteral("artist"));
ParamList parameters = ParamList() << Param(u"type"_s, u"artist"_s);
if (type_ == Type::SearchArtists) {
parameters << Param(QStringLiteral("q"), search_text_);
parameters << Param(u"q"_s, search_text_);
}
if (request.limit > 0) {
parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
parameters << Param(u"limit"_s, QString::number(request.limit));
}
if (request.offset > 0) {
parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
parameters << Param(u"offset"_s, QString::number(request.offset));
}
QNetworkReply *reply = nullptr;
if (type_ == Type::FavouriteArtists) {
reply = CreateRequest(QStringLiteral("me/following"), parameters);
reply = CreateRequest(u"me/following"_s, parameters);
}
if (type_ == Type::SearchArtists) {
reply = CreateRequest(QStringLiteral("search"), parameters);
reply = CreateRequest(u"search"_s, parameters);
}
if (!reply) continue;
replies_ << reply;
@@ -292,20 +292,20 @@ void SpotifyRequest::FlushAlbumsRequests() {
ParamList parameters;
if (type_ == Type::SearchAlbums) {
parameters << Param(QStringLiteral("type"), QStringLiteral("album"));
parameters << Param(QStringLiteral("q"), search_text_);
parameters << Param(u"type"_s, u"album"_s);
parameters << Param(u"q"_s, search_text_);
}
else {
parameters << Param(QStringLiteral("include_groups"), QStringLiteral("album,single"));
parameters << Param(u"include_groups"_s, u"album,single"_s);
}
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 (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 (type_ == Type::FavouriteAlbums) {
reply = CreateRequest(QStringLiteral("me/albums"), parameters);
reply = CreateRequest(u"me/albums"_s, parameters);
}
if (type_ == Type::SearchAlbums) {
reply = CreateRequest(QStringLiteral("search"), parameters);
reply = CreateRequest(u"search"_s, parameters);
}
if (!reply) continue;
replies_ << reply;
@@ -346,21 +346,21 @@ void SpotifyRequest::FlushSongsRequests() {
ParamList parameters;
if (type_ == Type::SearchSongs) {
parameters << Param(QStringLiteral("type"), QStringLiteral("track"));
parameters << Param(QStringLiteral("q"), search_text_);
parameters << Param(u"type"_s, u"track"_s);
parameters << Param(u"q"_s, search_text_);
}
if (request.limit > 0) {
parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
parameters << Param(u"limit"_s, QString::number(request.limit));
}
if (request.offset > 0) {
parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
parameters << Param(u"offset"_s, QString::number(request.offset));
}
QNetworkReply *reply = nullptr;
if (type_ == Type::FavouriteSongs) {
reply = CreateRequest(QStringLiteral("me/tracks"), parameters);
reply = CreateRequest(u"me/tracks"_s, parameters);
}
if (type_ == Type::SearchSongs) {
reply = CreateRequest(QStringLiteral("search"), parameters);
reply = CreateRequest(u"search"_s, parameters);
}
if (!reply) continue;
replies_ << reply;
@@ -440,7 +440,7 @@ void SpotifyRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_
}
if (!json_obj.contains("artists"_L1) || !json_obj["artists"_L1].isObject()) {
Error(QStringLiteral("Json object missing values."), json_obj);
Error(u"Json object missing values."_s, json_obj);
ArtistsFinishCheck();
return;
}
@@ -449,7 +449,7 @@ void SpotifyRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_
if (!obj_artists.contains("limit"_L1) ||
!obj_artists.contains("total"_L1) ||
!obj_artists.contains("items"_L1)) {
Error(QStringLiteral("Json object missing values."), obj_artists);
Error(u"Json object missing values."_s, obj_artists);
ArtistsFinishCheck();
return;
}
@@ -498,7 +498,7 @@ void SpotifyRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_
++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();
@@ -506,14 +506,14 @@ void SpotifyRequest::ArtistsReplyReceived(QNetworkReply *reply, const int limit_
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;
}
@@ -597,7 +597,7 @@ void SpotifyRequest::FlushArtistAlbumsRequests() {
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;
@@ -651,7 +651,7 @@ void SpotifyRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_a
!json_obj.contains("offset"_L1) ||
!json_obj.contains("total"_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_artist);
return;
}
@@ -689,7 +689,7 @@ void SpotifyRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_a
++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();
@@ -697,7 +697,7 @@ void SpotifyRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_a
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();
@@ -706,7 +706,7 @@ void SpotifyRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_a
if (obj_item.contains("album"_L1)) {
QJsonValue json_item = obj_item["album"_L1];
if (!json_item.isObject()) {
Error(QStringLiteral("Invalid Json reply, album in array is not a object."), json_item);
Error(u"Invalid Json reply, album in array is not a object."_s, json_item);
continue;
}
obj_item = json_item.toObject();
@@ -716,15 +716,15 @@ void SpotifyRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_a
Album album;
if (!obj_item.contains("id"_L1)) {
Error(QStringLiteral("Invalid Json reply, item is missing ID."), obj_item);
Error(u"Invalid Json reply, item is missing ID."_s, obj_item);
continue;
}
if (!obj_item.contains("name"_L1)) {
Error(QStringLiteral("Invalid Json reply, item is missing name."), obj_item);
Error(u"Invalid Json reply, item is missing name."_s, obj_item);
continue;
}
if (!obj_item.contains("images"_L1)) {
Error(QStringLiteral("Invalid Json reply, item is missing images."), obj_item);
Error(u"Invalid Json reply, item is missing images."_s, obj_item);
continue;
}
album.album_id = obj_item["id"_L1].toString();
@@ -910,7 +910,7 @@ void SpotifyRequest::FlushAlbumSongsRequests() {
AlbumSongsRequest request = album_songs_requests_queue_.dequeue();
++album_songs_requests_active_;
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); });
@@ -960,7 +960,7 @@ void SpotifyRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, c
!json_obj.contains("offset"_L1) ||
!json_obj.contains("total"_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, 0, 0);
return;
}
@@ -1000,7 +1000,7 @@ void SpotifyRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, c
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();
@@ -1084,7 +1084,7 @@ void SpotifyRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Ar
!json_obj.contains("track_number"_L1) ||
!json_obj.contains("disc_number"_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;
}

View File

@@ -88,7 +88,7 @@ using std::make_shared;
using namespace std::chrono_literals;
SpotifyService::SpotifyService(Application *app, QObject *parent)
: StreamingService(Song::Source::Spotify, QStringLiteral("Spotify"), QStringLiteral("spotify"), QLatin1String(SpotifySettingsPage::kSettingsGroup), SettingsDialog::Page::Spotify, app, parent),
: StreamingService(Song::Source::Spotify, u"Spotify"_s, u"spotify"_s, QLatin1String(SpotifySettingsPage::kSettingsGroup), SettingsDialog::Page::Spotify, app, parent),
app_(app),
network_(new NetworkAccessManager(this)),
artists_collection_backend_(nullptr),
@@ -279,11 +279,11 @@ void SpotifyService::Authenticate() {
code_challenge_.chop(1);
}
const ParamList params = ParamList() << Param(QStringLiteral("client_id"), QString::fromLatin1(QByteArray::fromBase64(kClientIDB64)))
<< Param(QStringLiteral("response_type"), QStringLiteral("code"))
<< Param(QStringLiteral("redirect_uri"), redirect_url.toString())
<< Param(QStringLiteral("state"), code_challenge_)
<< Param(QStringLiteral("scope"), QStringLiteral("user-follow-read user-follow-modify user-library-read user-library-modify streaming"));
const ParamList params = ParamList() << Param(u"client_id"_s, QString::fromLatin1(QByteArray::fromBase64(kClientIDB64)))
<< Param(u"response_type"_s, u"code"_s)
<< Param(u"redirect_uri"_s, redirect_url.toString())
<< Param(u"state"_s, code_challenge_)
<< Param(u"scope"_s, u"user-follow-read user-follow-modify user-library-read user-library-modify streaming"_s);
QUrlQuery url_query;
for (const Param &param : params) {
@@ -329,12 +329,12 @@ void SpotifyService::RedirectArrived() {
QUrl url = server_->request_url();
if (url.isValid()) {
QUrlQuery url_query(url);
if (url_query.hasQueryItem(QStringLiteral("error"))) {
LoginError(QUrlQuery(url).queryItemValue(QStringLiteral("error")));
if (url_query.hasQueryItem(u"error"_s)) {
LoginError(QUrlQuery(url).queryItemValue(u"error"_s));
}
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)) {
qLog(Debug) << "Spotify: Authorization URL Received" << url;
QString code = url_query.queryItemValue(QStringLiteral("code"));
QString code = url_query.queryItemValue(u"code"_s);
QUrl redirect_url(QString::fromLatin1(kOAuthRedirectUrl));
redirect_url.setPort(server_->url().port());
RequestAccessToken(code, redirect_url);
@@ -361,17 +361,17 @@ void SpotifyService::RequestAccessToken(const QString &code, const QUrl &redirec
refresh_login_timer_.stop();
ParamList params = ParamList() << Param(QStringLiteral("client_id"), QString::fromLatin1(QByteArray::fromBase64(kClientIDB64)))
<< Param(QStringLiteral("client_secret"), QString::fromLatin1(QByteArray::fromBase64(kClientSecretB64)));
ParamList params = ParamList() << Param(u"client_id"_s, QString::fromLatin1(QByteArray::fromBase64(kClientIDB64)))
<< Param(u"client_secret"_s, QString::fromLatin1(QByteArray::fromBase64(kClientSecretB64)));
if (!code.isEmpty() && !redirect_url.isEmpty()) {
params << Param(QStringLiteral("grant_type"), QStringLiteral("authorization_code"));
params << Param(QStringLiteral("code"), code);
params << Param(QStringLiteral("redirect_uri"), redirect_url.toString());
params << Param(u"grant_type"_s, u"authorization_code"_s);
params << Param(u"code"_s, code);
params << Param(u"redirect_uri"_s, redirect_url.toString());
}
else if (!refresh_token_.isEmpty() && enabled_) {
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;
@@ -385,7 +385,7 @@ void SpotifyService::RequestAccessToken(const QString &code, const QUrl &redirec
QUrl new_url(QString::fromLatin1(kOAuthAccessTokenUrl));
QNetworkRequest req(new_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);
QString auth_header_data = QString::fromLatin1(QByteArray::fromBase64(kClientIDB64)) + QLatin1Char(':') + QString::fromLatin1(QByteArray::fromBase64(kClientSecretB64));
req.setRawHeader("Authorization", "Basic " + auth_header_data.toUtf8().toBase64());
@@ -456,23 +456,23 @@ void SpotifyService::AccessTokenRequestFinished(QNetworkReply *reply) {
}
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;
}