diff options
author | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-12-05 22:50:33 +0100 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2012-01-09 23:55:25 +0100 |
commit | f405849b49614254f42eb3ee6147434458978623 (patch) | |
tree | ecf06af8ba1b049504957d4e2797ead26c81ec3e /src/utils | |
parent | f5172d4fcc10be73b72c1033cf9357a4dfe3544d (diff) | |
download | mana-f405849b49614254f42eb3ee6147434458978623.tar.gz mana-f405849b49614254f42eb3ee6147434458978623.tar.bz2 mana-f405849b49614254f42eb3ee6147434458978623.tar.xz mana-f405849b49614254f42eb3ee6147434458978623.zip |
Made the client able to remove the port from update urls.
Resolves: Mana-Mantis #381.
Reviewed-by: Ablu.
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/stringutils.cpp | 49 | ||||
-rw-r--r-- | src/utils/stringutils.h | 11 |
2 files changed, 59 insertions, 1 deletions
diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp index 96b67370..77914214 100644 --- a/src/utils/stringutils.cpp +++ b/src/utils/stringutils.cpp @@ -21,6 +21,8 @@ #include "utils/stringutils.h" +#include "log.h" + #include <string.h> #include <algorithm> #include <cstdarg> @@ -227,5 +229,50 @@ std::string autocomplete(std::vector<std::string> &candidates, std::string normalize(const std::string &name) { std::string normalized = name; - return toLower(trim(normalized));; + return toLower(trim(normalized)); +} + +std::string removeTrailingSymbol(const std::string& s, const char c) +{ + // Remove the trailing symblol at the end of the string + if (!s.empty() && s.at(s.size() - 1) == c) + return s.substr(0, s.size() - 1); + return std::string(s); +} + +std::string getHostNameFromURL(const std::string& url) +{ + std::string myHostName; + + // Don't go out of range in the next check + if (url.length() < 2) + return myHostName; + + // Remove any trailing slash at the end of the update host + myHostName = removeTrailingSymbol(url, '/'); + + // Parse out any "http://", "ftp://", ect... + size_t pos = myHostName.find("://"); + if (pos == myHostName.npos) + { + logger->log("Warning: no protocol was specified for the url: %s", + url.c_str()); + } + + if (myHostName.empty() || pos + 3 >= myHostName.length()) + { + logger->log("Error: Invalid url: %s", url.c_str()); + return myHostName; + } + myHostName = myHostName.substr(pos + 3); + + // Remove possible trailing port (i.e.: localhost:8000 -> localhost) + pos = myHostName.find(":"); + if (pos != myHostName.npos) + myHostName = myHostName.substr(0, pos); + + // remove possible other junk + removeBadChars(myHostName); + + return myHostName; } diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h index 2c6fad78..3ef4d513 100644 --- a/src/utils/stringutils.h +++ b/src/utils/stringutils.h @@ -149,4 +149,15 @@ std::string autocomplete(std::vector<std::string> &candidates, */ std::string normalize(const std::string &name); +/** + * Remove a potential trailing symbol from a string. + */ +std::string removeTrailingSymbol(const std::string& s, const char c); + +/** + * Gets the hostname out of the given URL. + * i.e.: http://www.manasource.org:9601 -> www.manasource.org + */ +std::string getHostNameFromURL(const std::string& url); + #endif // UTILS_STRINGUTILS_H |