From be3f880534673a76faa2e2c500d8fc49089ae8c0 Mon Sep 17 00:00:00 2001 From: Bernd Wachter Date: Fri, 1 Nov 2013 14:04:27 +0200 Subject: [PATCH] [ssu] Prepare support for special store repositories --- libssu/ssu.cpp | 19 +++++++++++++++++++ libssu/ssu.h | 4 ++++ ssuurlresolver/ssuurlresolver.cpp | 8 +++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/libssu/ssu.cpp b/libssu/ssu.cpp index 212ad8a..4dd1fb8 100644 --- a/libssu/ssu.cpp +++ b/libssu/ssu.cpp @@ -76,6 +76,11 @@ QPair Ssu::credentials(QString scope){ QString Ssu::credentialsScope(QString repoName, bool rndRepo){ SsuCoreConfig *settings = SsuCoreConfig::instance(); + + // hardcoded magic for doing special privileges store repositories + if (repoName == "store" || repoName.startsWith("store-c-")) + return "store"; + return settings->credentialsScope(repoName, rndRepo); } @@ -580,6 +585,20 @@ void Ssu::updateCredentials(bool force){ manager->get(request); } +void Ssu::updateStoreCredentials(){ + SsuCoreConfig *settings = SsuCoreConfig::instance(); + QString username, password; + + // TODO: + // - get values for username/password from store + // - use setError() to set error state if credentials can't be received + + settings->beginGroup("credentials-store"); + settings->setValue("username", username); + settings->setValue("password", password); + settings->endGroup(); + settings->sync(); +} void Ssu::unregister(){ SsuCoreConfig *settings = SsuCoreConfig::instance(); diff --git a/libssu/ssu.h b/libssu/ssu.h index ec835bb..816d412 100644 --- a/libssu/ssu.h +++ b/libssu/ssu.h @@ -177,6 +177,10 @@ class Ssu: public QObject { * error message. */ void updateCredentials(bool force=false); + /** + * Try to update credentials for (Jolla) store + */ + void updateStoreCredentials(); signals: /** diff --git a/ssuurlresolver/ssuurlresolver.cpp b/ssuurlresolver/ssuurlresolver.cpp index 30d9826..6cb8381 100644 --- a/ssuurlresolver/ssuurlresolver.cpp +++ b/ssuurlresolver/ssuurlresolver.cpp @@ -125,6 +125,12 @@ void SsuUrlResolver::run(){ } else ssuLog->print(LOG_DEBUG, "Device not registered -- skipping credential update"); + if (repo == "store" || repo.startsWith("store-c-")){ + ssu.updateStoreCredentials(); + if (ssu.error()) + error (ssu.lastError()); + } + // resolve base url resolvedUrl = ssu.repoUrl(repo, isRnd, repoParameters); @@ -155,7 +161,7 @@ void SsuUrlResolver::run(){ if (resolvedUrl.isEmpty()){ error("URL for repository is not set."); } else if (resolvedUrl.indexOf(QRegExp("[a-z]*://", Qt::CaseInsensitive)) != 0) { - error ("URL for repository is invalid."); + error("URL for repository is invalid."); } else { PluginFrame out("RESOLVEDURL"); out.setBody(resolvedUrl.toStdString());