[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [attica] src: Make it actually possible to tell providers from the url we were given
From: Aleix Pol <aleixpol () kde ! org>
Date: 2016-05-31 22:13:07
Message-ID: E1b7ruN-0000O7-0s () scm ! kde ! org
[Download RAW message or body]
Git commit d262b645ee0d7fdd32dcab57553a60bfcb32dd36 by Aleix Pol.
Committed on 31/05/2016 at 22:04.
Pushed by apol into branch 'master'.
Make it actually possible to tell providers from the url we were given
There's 2 similar concepts in Attica: the ProviderUrl (which is in fact
inherited from KNS) and the provider's url.
This patch adds some API to be able to tell a provider from the ProviderUrl
we have.
Differential Revision: https://phabricator.kde.org/D1719
M +17 -8 src/providermanager.cpp
M +20 -2 src/providermanager.h
http://commits.kde.org/attica/d262b645ee0d7fdd32dcab57553a60bfcb32dd36
diff --git a/src/providermanager.cpp b/src/providermanager.cpp
index 168637b..3013662 100644
--- a/src/providermanager.cpp
+++ b/src/providermanager.cpp
@@ -48,7 +48,7 @@ class ProviderManager::Private
public:
PlatformDependent *m_internals;
QHash<QUrl, Provider> m_providers;
- QHash<QUrl, QList<QString> > m_providerFiles;
+ QHash<QUrl, QUrl> m_providerTargets;
QSignalMapper m_downloadMapping;
QHash<QString, QNetworkReply *> m_downloads;
bool m_authenticationSuppressed;
@@ -96,7 +96,7 @@ void ProviderManager::setAuthenticationSuppressed(bool suppressed)
void ProviderManager::clear()
{
- d->m_providerFiles.clear();
+ d->m_providerTargets.clear();
d->m_providers.clear();
}
@@ -139,7 +139,7 @@ void ProviderManager::addProviderFile(const QUrl &url)
qWarning() << "ProviderManager::addProviderFile: could not open provider \
file: " << url.toString(); return;
}
- addProviderFromXml(QLatin1String(file.readAll()));
+ parseProviderFile(QLatin1String(file.readAll()), url);
} else {
if (!d->m_downloads.contains(url.toString())) {
QNetworkReply *reply = d->m_internals->get(QNetworkRequest(url));
@@ -153,18 +153,17 @@ void ProviderManager::addProviderFile(const QUrl &url)
void ProviderManager::fileFinished(const QString &url)
{
QNetworkReply *reply = d->m_downloads.take(url);
- parseProviderFile(QLatin1String(reply->readAll()), url);
+ parseProviderFile(QLatin1String(reply->readAll()), QUrl(url));
reply->deleteLater();
}
void ProviderManager::addProviderFromXml(const QString &providerXml)
{
- parseProviderFile(providerXml, QString());
+ parseProviderFile(providerXml, QUrl());
}
-void ProviderManager::parseProviderFile(const QString &xmlString, const QString \
&url) +void ProviderManager::parseProviderFile(const QString &xmlString, const QUrl \
&url) {
- Q_UNUSED(url)
QXmlStreamReader xml(xmlString);
while (!xml.atEnd() && xml.readNext()) {
if (xml.isStartElement() && xml.name() == QLatin1String("provider")) {
@@ -226,16 +225,26 @@ void ProviderManager::parseProviderFile(const QString \
&xmlString, const QString
d->m_providers.insert(baseUrl, Provider(d->m_internals, baseUrl, \
name, icon,
person, friendV, message, \
achievement, activity, content, fan, forum, knowledgebase,
event, comment, \
registerUrl)); + d->m_providerTargets[url] = baseUrl;
emit providerAdded(d->m_providers.value(baseUrl));
}
}
}
+ if (xml.error() != QXmlStreamReader::NoError) {
+ qDebug() << "error:" << xml.errorString() << "in" << url;
+ }
+
if (d->m_downloads.isEmpty()) {
emit defaultProvidersLoaded();
}
}
+Provider ProviderManager::providerFor(const QUrl &url) const
+{
+ return providerByUrl(d->m_providerTargets.value(url));
+}
+
Provider ProviderManager::providerByUrl(const QUrl &url) const
{
return d->m_providers.value(url);
@@ -253,7 +262,7 @@ bool ProviderManager::contains(const QString &provider) const
QList<QUrl> ProviderManager::providerFiles() const
{
- return d->m_providerFiles.keys();
+ return d->m_providerTargets.keys();
}
void ProviderManager::authenticate(QNetworkReply *reply, QAuthenticator *auth)
diff --git a/src/providermanager.h b/src/providermanager.h
index 27a0f55..ab0aea5 100644
--- a/src/providermanager.h
+++ b/src/providermanager.h
@@ -125,10 +125,28 @@ public:
void addProviderFile(const QUrl &file);
QList<QUrl> providerFiles() const;
+ /**
+ * @returns all loaded providers
+ */
QList<Provider> providers() const;
- bool contains(const QString &provider) const;
+
+ ATTICA_DEPRECATED bool contains(const QString &provider) const;
+
+ /**
+ * @returns whether there's a provider with base url @p provider
+ */
+ bool contains(const QUrl &provider) const;
+
+ /**
+ * @returns the provider with @p url base url.
+ */
Provider providerByUrl(const QUrl &url) const;
+ /**
+ * @returns the provider for a given provider @p url.
+ */
+ Provider providerFor(const QUrl &url) const;
+
Q_SIGNALS:
void providerAdded(const Attica::Provider &provider);
void defaultProvidersLoaded();
@@ -147,7 +165,7 @@ private:
void initNetworkAccesssManager();
PlatformDependent *loadPlatformDependent(const ProviderFlags &flags);
- void parseProviderFile(const QString &xmlString, const QString &url);
+ void parseProviderFile(const QString &xmlString, const QUrl &url);
class Private;
Private *const d;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic