diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /library/cpp/tld/tld.cpp | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'library/cpp/tld/tld.cpp')
-rw-r--r-- | library/cpp/tld/tld.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/library/cpp/tld/tld.cpp b/library/cpp/tld/tld.cpp new file mode 100644 index 00000000000..e31f3f03221 --- /dev/null +++ b/library/cpp/tld/tld.cpp @@ -0,0 +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> + +namespace NTld { + 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); + } + } + }; + } + + const char* const* GetTlds() { + return TopLevelDomains; + } + + bool IsTld(const TStringBuf& s) { + return Default<TTLDHash>().contains(s); + } + + bool IsVeryGoodTld(const TStringBuf& s) { + return Default<TVeryGoodTld>().contains(s); + } + +} |