#include "./makeitpersonal.h" #include "../application/settings.h" #include "../misc/networkaccessmanager.h" #include #include #include #include #include using namespace std; using namespace std::placeholders; using namespace Utility; namespace QtGui { static const QString defaultMakeItPersonalUrl(QStringLiteral("https://makeitpersonal.co")); static QUrl makeItPersonalApiUrl() { const auto &makeItPersonalUrl = Settings::values().dbQuery.makeItPersonalUrl; return QUrl((makeItPersonalUrl.isEmpty() ? defaultMakeItPersonalUrl : makeItPersonalUrl) + QStringLiteral("/lyrics")); } MakeItPersonalResultsModel::MakeItPersonalResultsModel(SongDescription &&initialSongDescription, QNetworkReply *reply) : HttpResultsModel(std::move(initialSongDescription), reply) { } bool MakeItPersonalResultsModel::fetchLyrics(const QModelIndex &index) { Q_UNUSED(index) return true; // lyrics don't need to be fetched separately here } void MakeItPersonalResultsModel::parseInitialResults(const QByteArray &data) { beginResetModel(); m_results.clear(); auto desc = m_initialDescription; desc.songId = m_initialDescription.artist + m_initialDescription.title; desc.artistId = m_initialDescription.artist; desc.lyrics = QString::fromUtf8(data).trimmed(); if (desc.lyrics != QLatin1String("Sorry, We don't have lyrics for this song yet.")) { m_results << std::move(desc); } endResetModel(); } QueryResultsModel *queryMakeItPersonal(SongDescription &&songDescription) { auto query = QUrlQuery(); query.addQueryItem(QStringLiteral("artist"), songDescription.artist); query.addQueryItem(QStringLiteral("title"), songDescription.title); auto url = makeItPersonalApiUrl(); url.setQuery(query); return new MakeItPersonalResultsModel(std::move(songDescription), Utility::networkAccessManager().get(QNetworkRequest(url))); } } // namespace QtGui