aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/scrobbler/lastfmscrobbler.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-01-29 17:07:27 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-01-29 17:07:27 +0000
commitab030aa3915a48a7590a194bd680157958be4d54 (patch)
tree5ab24364aac95e201db323072330393829dc85ca /src/plugins/General/scrobbler/lastfmscrobbler.cpp
parentf24e948ba5117ec92a148b78222269d4905916bc (diff)
downloadqmmp-ab030aa3915a48a7590a194bd680157958be4d54.tar.gz
qmmp-ab030aa3915a48a7590a194bd680157958be4d54.tar.bz2
qmmp-ab030aa3915a48a7590a194bd680157958be4d54.zip
lastfm scrobbler: enabled 'check session' button
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3194 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/scrobbler/lastfmscrobbler.cpp')
-rw-r--r--src/plugins/General/scrobbler/lastfmscrobbler.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/plugins/General/scrobbler/lastfmscrobbler.cpp b/src/plugins/General/scrobbler/lastfmscrobbler.cpp
index be327ae0a..ba414f58b 100644
--- a/src/plugins/General/scrobbler/lastfmscrobbler.cpp
+++ b/src/plugins/General/scrobbler/lastfmscrobbler.cpp
@@ -428,6 +428,39 @@ void LastfmAuth::getSession()
m_getSessionReply = m_http->get(request);
}
+void LastfmAuth::checkSession(const QString &session)
+{
+ qDebug("LastfmAuth: checking session...");
+ QMap <QString, QString> params;
+ params.insert("api_key", API_KEY);
+ params.insert("sk", session);
+ params.insert("method", "user.getRecommendedArtists");
+ params.insert("limit", "1");
+
+ QUrl url(SCROBBLER_LASTFM_URL);
+ url.setPort(80);
+
+ QUrl body("");
+ QByteArray data;
+ foreach (QString key, params.keys())
+ {
+ body.addQueryItem(key, params.value(key));
+ data.append(key.toUtf8() + params.value(key).toUtf8());
+ }
+ data.append(SECRET);
+ body.addQueryItem("api_sig", QCryptographicHash::hash(data, QCryptographicHash::Md5).toHex());
+ QByteArray bodyData = body.toEncoded().remove(0,1);
+ bodyData.replace("+", QUrl::toPercentEncoding("+"));
+
+ QNetworkRequest request(url);
+ request.setRawHeader("User-Agent", m_ua);
+ request.setRawHeader("Host", url.host().toAscii());
+ request.setRawHeader("Accept", "*/*");
+ request.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
+ request.setHeader(QNetworkRequest::ContentLengthHeader, bodyData.size());
+ m_checkSessionReply = m_http->post(request, bodyData);
+}
+
QString LastfmAuth::session() const
{
return m_session;
@@ -520,5 +553,24 @@ void LastfmAuth::processResponse(QNetworkReply *reply)
emit sessionRequestFinished(LASTFM_ERROR);
}
}
+ else if(reply == m_checkSessionReply)
+ {
+ m_checkSessionReply = 0;
+ if(response.status == "ok")
+ {
+ qDebug("LastfmAuth: session ok");
+ emit checkSessionFinished(NO_ERROR);
+ }
+ else if(error_code.isEmpty())
+ {
+ qWarning("LastfmAuth: network error");
+ emit checkSessionFinished(NETWORK_ERROR);
+ }
+ else
+ {
+ qWarning("LastfmAuth: received last.fm error (code=%s)", qPrintable(error_code));
+ emit checkSessionFinished(LASTFM_ERROR);
+ }
+ }
reply->deleteLater();
}