summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRJ Ryan <rryan@mixxx.org>2015-12-27 22:55:37 -0500
committerRJ Ryan <rryan@mixxx.org>2015-12-27 22:55:37 -0500
commit4d97616000cb5c02fc08ff5427e0120bd83bbd44 (patch)
tree8a73c99befa1937de76ed845ef09ebbc73bdab7a /src
parenteac04f98681da0ffc8d29cfa38dd2201ce106eca (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
Diffstat (limited to 'src')
-rw-r--r--src/musicbrainz/musicbrainzclient.cpp20
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) {