diff options
author | Anton Samokhvalov <pg83@yandex.ru> | 2022-02-10 16:45:15 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:15 +0300 |
commit | 72cb13b4aff9bc9cf22e49251bc8fd143f82538f (patch) | |
tree | da2c34829458c7d4e74bdfbdf85dff449e9e7fb8 /library/cpp/tld | |
parent | 778e51ba091dc39e7b7fcab2b9cf4dbedfb6f2b5 (diff) | |
download | ydb-72cb13b4aff9bc9cf22e49251bc8fd143f82538f.tar.gz |
Restoring authorship annotation for Anton Samokhvalov <pg83@yandex.ru>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/tld')
-rwxr-xr-x | library/cpp/tld/gen_tld.py | 2 | ||||
-rw-r--r-- | library/cpp/tld/tld.cpp | 70 | ||||
-rw-r--r-- | library/cpp/tld/tld.h | 30 | ||||
-rw-r--r-- | library/cpp/tld/tld_ut.cpp | 6 | ||||
-rw-r--r-- | library/cpp/tld/ya.make | 2 |
5 files changed, 55 insertions, 55 deletions
diff --git a/library/cpp/tld/gen_tld.py b/library/cpp/tld/gen_tld.py index 882b701e1d..59b265fb21 100755 --- a/library/cpp/tld/gen_tld.py +++ b/library/cpp/tld/gen_tld.py @@ -27,7 +27,7 @@ def main(): break print '// actual list can be found at http://data.iana.org/TLD/tlds-alpha-by-domain.txt' - print 'static const char* const TopLevelDomains[] = {' + print 'static const char* const TopLevelDomains[] = {' for label, value in sorted(tlds.iteritems()): if label == 'xn--': diff --git a/library/cpp/tld/tld.cpp b/library/cpp/tld/tld.cpp index e31f3f0322..dbfd9d5332 100644 --- a/library/cpp/tld/tld.cpp +++ b/library/cpp/tld/tld.cpp @@ -1,48 +1,48 @@ #include "tld.h" #include <library/cpp/digest/lower_case/hash_ops.h> - + #include <util/generic/hash_set.h> -#include <util/generic/singleton.h> +#include <util/generic/singleton.h> namespace NTld { - namespace { + namespace { #include <library/cpp/tld/tld.inc> - using TCiHash = THashSet<TStringBuf, TCIOps, TCIOps>; - - struct TTLDHash: public TCiHash { - TTLDHash() { - for (auto tld = GetTlds(); *tld; ++tld) { - insert(*tld); - } - } - }; - - struct TVeryGoodTld: public TCiHash { - TVeryGoodTld() { - auto domains = { - "am", "az", "biz", "by", "com", "cz", "de", "ec", "fr", "ge", "gov", - "gr", "il", "info", "kg", "kz", "mobi", "net", "nu", "org", "lt", "lv", - "md", "ru", "su", "tr", "ua", "uk", "uz", "ws", "xn--p1ai", "рф"}; - - for (auto d : domains) { - insert(d); - } + using TCiHash = THashSet<TStringBuf, TCIOps, TCIOps>; + + struct TTLDHash: public TCiHash { + TTLDHash() { + for (auto tld = GetTlds(); *tld; ++tld) { + insert(*tld); + } + } + }; + + struct TVeryGoodTld: public TCiHash { + TVeryGoodTld() { + auto domains = { + "am", "az", "biz", "by", "com", "cz", "de", "ec", "fr", "ge", "gov", + "gr", "il", "info", "kg", "kz", "mobi", "net", "nu", "org", "lt", "lv", + "md", "ru", "su", "tr", "ua", "uk", "uz", "ws", "xn--p1ai", "рф"}; + + for (auto d : domains) { + insert(d); + } } - }; - } - - const char* const* GetTlds() { - return TopLevelDomains; - } - - bool IsTld(const TStringBuf& s) { + }; + } + + const char* const* GetTlds() { + return TopLevelDomains; + } + + bool IsTld(const TStringBuf& s) { return Default<TTLDHash>().contains(s); - } + } - bool IsVeryGoodTld(const TStringBuf& s) { + bool IsVeryGoodTld(const TStringBuf& s) { return Default<TVeryGoodTld>().contains(s); - } - + } + } diff --git a/library/cpp/tld/tld.h b/library/cpp/tld/tld.h index 9e241de090..4829b7bea6 100644 --- a/library/cpp/tld/tld.h +++ b/library/cpp/tld/tld.h @@ -3,26 +3,26 @@ #include <util/generic/strbuf.h> namespace NTld { - const char* const* GetTlds(); + const char* const* GetTlds(); - // Note that FindTld() returns empty string when @host is single domain label (without '.'). + // Note that FindTld() returns empty string when @host is single domain label (without '.'). // If you need whole @host for such case, you can use GetZone() from library/cpp/string_utils/url/url.h - inline TStringBuf FindTld(const TStringBuf& host) { - size_t p = host.rfind('.'); - return p != TStringBuf::npos ? host.SubStr(p + 1) : TStringBuf(); - } + inline TStringBuf FindTld(const TStringBuf& host) { + size_t p = host.rfind('.'); + return p != TStringBuf::npos ? host.SubStr(p + 1) : TStringBuf(); + } - bool IsTld(const TStringBuf& tld); + bool IsTld(const TStringBuf& tld); - inline bool InTld(const TStringBuf& host) { - return IsTld(FindTld(host)); - } + inline bool InTld(const TStringBuf& host) { + return IsTld(FindTld(host)); + } - // check if @s belongs to a "good" subset of reliable TLDs, defined in tld.cpp - bool IsVeryGoodTld(const TStringBuf& tld); + // check if @s belongs to a "good" subset of reliable TLDs, defined in tld.cpp + bool IsVeryGoodTld(const TStringBuf& tld); - inline bool InVeryGoodTld(const TStringBuf& host) { - return IsVeryGoodTld(FindTld(host)); - } + inline bool InVeryGoodTld(const TStringBuf& host) { + return IsVeryGoodTld(FindTld(host)); + } } diff --git a/library/cpp/tld/tld_ut.cpp b/library/cpp/tld/tld_ut.cpp index 733200f2b5..9d11e3adaa 100644 --- a/library/cpp/tld/tld_ut.cpp +++ b/library/cpp/tld/tld_ut.cpp @@ -43,9 +43,9 @@ Y_UNIT_TEST_SUITE(TTldTest) { UNIT_ASSERT(!IsVeryGoodTld("BMW")); UNIT_ASSERT(!IsVeryGoodTld("TiReS")); UNIT_ASSERT(IsVeryGoodTld("рф")); - UNIT_ASSERT(!IsVeryGoodTld("РФ")); // note that uppercase non-ascii tlds cannot be found - UNIT_ASSERT(IsVeryGoodTld("xn--p1ai")); // "рф" - UNIT_ASSERT(!IsVeryGoodTld("xn--p1ag")); // "ру" + UNIT_ASSERT(!IsVeryGoodTld("РФ")); // note that uppercase non-ascii tlds cannot be found + UNIT_ASSERT(IsVeryGoodTld("xn--p1ai")); // "рф" + UNIT_ASSERT(!IsVeryGoodTld("xn--p1ag")); // "ру" UNIT_ASSERT(!IsVeryGoodTld("YaHOO")); UNIT_ASSERT(!IsVeryGoodTld("xn")); diff --git a/library/cpp/tld/ya.make b/library/cpp/tld/ya.make index aeabbfeebf..1ff1001a17 100644 --- a/library/cpp/tld/ya.make +++ b/library/cpp/tld/ya.make @@ -7,7 +7,7 @@ PYTHON( IN tlds-alpha-by-domain.txt STDOUT tld.inc ) - + SRCS( tld.cpp ) |