Ref T150, utility functions in URL list

* renamed to withAppendedPath
* findByHost
* addFailed utility functions
This commit is contained in:
Klaus Basan
2017-09-14 02:18:51 +02:00
committed by Mathew Sutcliffe
parent fe01a9d4aa
commit afbf3f05c8
5 changed files with 60 additions and 3 deletions

View File

@@ -8,8 +8,9 @@
*/
#include "blackmisc/network/urllist.h"
#include "blackmisc/math/mathutils.h"
#include "blackmisc/network/networkutils.h"
#include "blackmisc/math/mathutils.h"
#include "blackmisc/stringutils.h"
#include <QtGlobal>
#include <tuple>
@@ -68,7 +69,7 @@ namespace BlackMisc
return copy.getRandomUrl();
}
CUrlList CUrlList::appendPath(const QString &path) const
CUrlList CUrlList::withAppendedPath(const QString &path) const
{
if (path.isEmpty() || this->isEmpty()) { return (*this); }
CUrlList urls;
@@ -79,6 +80,20 @@ namespace BlackMisc
return urls;
}
CUrlList CUrlList::findByHost(const QString &host, Qt::CaseSensitivity cs) const
{
CUrlList result;
if (host.isEmpty() || this->isEmpty()) { return result; }
for (const CUrl &url : *this)
{
if (stringCompare(url.getHost(), host, cs))
{
result.push_back(url);
}
}
return result;
}
QString CUrlList::convertToQString(const QString &separator, bool i18n) const
{
const QStringList sl(toStringList(i18n));
@@ -136,6 +151,26 @@ namespace BlackMisc
return hasMoreUrlsToTry();
}
bool CFailoverUrlList::addFailedUrls(const CUrlList &failedUrls)
{
this->m_failedUrls.push_back(failedUrls);
return hasMoreUrlsToTry();
}
bool CFailoverUrlList::addFailedHost(const CUrl &failedUrl)
{
Q_ASSERT_X(!failedUrl.isEmpty(), Q_FUNC_INFO, "empty URL as failed");
const QString host = failedUrl.getHost();
return CFailoverUrlList::addFailedHost(host);
}
bool CFailoverUrlList::addFailedHost(const QString &host, Qt::CaseSensitivity cs)
{
if (host.isEmpty()) { return this->hasMoreUrlsToTry(); }
const CUrlList failedUrls = this->findByHost(host, cs);
return addFailedUrls(failedUrls);
}
bool CFailoverUrlList::hasMoreUrlsToTry() const
{
if (this->isEmpty()) { return false; }

View File

@@ -53,7 +53,10 @@ namespace BlackMisc
CUrl getRandomWithout(const CUrlList &exclude) const;
//! Append path to all URLs
CUrlList appendPath(const QString &path) const;
CUrlList withAppendedPath(const QString &path) const;
//! Find by host
CUrlList findByHost(const QString &host, Qt::CaseSensitivity cs = Qt::CaseInsensitive) const;
//! To formatted String
QString convertToQString(const QString &separator, bool i18n = false) const;
@@ -90,6 +93,15 @@ namespace BlackMisc
//! Failed URL
bool addFailedUrl(const CUrl &failedUrl);
//! Failed URLs
bool addFailedUrls(const CUrlList &failedUrls);
//! Failed host
bool addFailedHost(const CUrl &failedUrl);
//! Failed host
bool addFailedHost(const QString &host, Qt::CaseSensitivity cs = Qt::CaseInsensitive);
//! More URLs to try
bool hasMoreUrlsToTry() const;