diff options
author | RJ Ryan <rryan@mixxx.org> | 2015-12-27 22:55:37 -0500 |
---|---|---|
committer | RJ Ryan <rryan@mixxx.org> | 2015-12-27 22:55:37 -0500 |
commit | 4d97616000cb5c02fc08ff5427e0120bd83bbd44 (patch) | |
tree | 8a73c99befa1937de76ed845ef09ebbc73bdab7a | |
parent | eac04f98681da0ffc8d29cfa38dd2201ce106eca (diff) |
Treat 404 as a not found instead of a network error.
Avoids the confusing "could not connect to MusicBrainz" error. Partially
fixes https://bugs.launchpad.net/mixxx/+bug/1510550
-rw-r--r-- | src/musicbrainz/musicbrainzclient.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/musicbrainz/musicbrainzclient.cpp b/src/musicbrainz/musicbrainzclient.cpp index 4a97b2ef03..b6953b577c 100644 --- a/src/musicbrainz/musicbrainzclient.cpp +++ b/src/musicbrainz/musicbrainzclient.cpp @@ -12,6 +12,7 @@ #include <QtNetwork> #include <QSet> #include <QXmlStreamReader> +#include <QTextStream> #include <QUrl> #include "musicbrainzclient.h" @@ -34,8 +35,8 @@ void MusicBrainzClient::start(int id, const QString& mbid) { QUrl url(m_TrackUrl + mbid); url.setQueryItems(parameters); + qDebug() << "MusicBrainzClient GET request:" << url.toString(); QNetworkRequest req(url); - QNetworkReply* reply = m_network.get(req); connect(reply, SIGNAL(finished()), SLOT(requestFinished())); m_requests[reply] = id; @@ -66,14 +67,25 @@ void MusicBrainzClient::requestFinished() { int id = m_requests.take(reply); ResultList ret; - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + + // MusicBrainz returns 404 when the MBID is not in their database. We treat + // a status of 404 the same as a 200 but it will produce an empty list of + // results. + if (status != 200 && status != 404) { + QTextStream body(reply); + qDebug() << "MusicBrainzClient GET reply status:" << status << "body:" << body.readAll(); emit(networkError( reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), "Musicbrainz")); return; } - QXmlStreamReader reader(reply); + QTextStream textReader(reply); + QString body = textReader.readAll(); + qDebug() << "MusicBrainzClient GET reply status:" << status << "body:" << body; + + QXmlStreamReader reader(body); while (!reader.atEnd()) { if (reader.readNext() == QXmlStreamReader::StartElement && reader.name() == "recording") { @@ -86,7 +98,7 @@ void MusicBrainzClient::requestFinished() { } } } - emit (finished(id, uniqueResults(ret))); + emit(finished(id, uniqueResults(ret))); } MusicBrainzClient::ResultList MusicBrainzClient::parseTrack(QXmlStreamReader& reader) { |