From 9a7a0c363fe249b080c9c620bbb3b9527c138a9a Mon Sep 17 00:00:00 2001 From: Bernd Wachter Date: Fri, 3 May 2013 16:12:09 +0300 Subject: [PATCH] [urlresolver] Make error cases more userfriendly --- ssuurlresolver/ssuurlresolver.cpp | 28 +++++++++++++++++++++------- ssuurlresolver/ssuurlresolver.h | 1 + 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ssuurlresolver/ssuurlresolver.cpp b/ssuurlresolver/ssuurlresolver.cpp index d9dcf78..be9dc25 100644 --- a/ssuurlresolver/ssuurlresolver.cpp +++ b/ssuurlresolver/ssuurlresolver.cpp @@ -20,6 +20,16 @@ SsuUrlResolver::SsuUrlResolver(): QObject(){ Qt::QueuedConnection); } +void SsuUrlResolver::error(QString message){ + SsuLog *ssuLog = SsuLog::instance(); + ssuLog->print(LOG_WARNING, message); + + PluginFrame out("ERROR"); + out.setBody(message.toStdString()); + out.writeTo(std::cout); + QCoreApplication::exit(1); +} + bool SsuUrlResolver::writeCredentials(QString filePath, QString credentialsScope){ QFile credentialsFile(filePath); QPair credentials = ssu.credentials(credentialsScope); @@ -53,8 +63,7 @@ void SsuUrlResolver::run(){ PluginFrame in(std::cin); if (in.headerEmpty()){ - // FIXME, do something; we need at least repo header - ssuLog->print(LOG_WARNING, "Received empty header list. Most likely your ssu setup is broken"); + error("Received empty header list. Most likely your ssu setup is broken"); } PluginFrame::HeaderListIterator it; @@ -101,8 +110,7 @@ void SsuUrlResolver::run(){ // TODO: figure out if there's better eror handling for // zypper plugins than 'blow up' if (ssu.error()){ - emit done(); - return; + error(ssu.lastError()); } } else ssuLog->print(LOG_DEBUG, "Device not registered -- skipping credential update"); @@ -139,9 +147,15 @@ void SsuUrlResolver::run(){ // is protected, but device is not registered and/or we don't have credentials ssuLog->print(LOG_INFO, QString("%1 resolved to %2").arg(repo).arg(resolvedUrl)); - PluginFrame out("RESOLVEDURL"); - out.setBody(resolvedUrl.toStdString()); - out.writeTo(std::cout); + 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."); + } else { + PluginFrame out("RESOLVEDURL"); + out.setBody(resolvedUrl.toStdString()); + out.writeTo(std::cout); + } emit done(); } diff --git a/ssuurlresolver/ssuurlresolver.h b/ssuurlresolver/ssuurlresolver.h index c530ce6..db45d2e 100644 --- a/ssuurlresolver/ssuurlresolver.h +++ b/ssuurlresolver/ssuurlresolver.h @@ -53,6 +53,7 @@ class SsuUrlResolver: public QObject { private: Ssu ssu; + void error(QString message); void printJournal(int priority, QString message); bool writeCredentials(QString filePath, QString credentialsScope);