diff options
author | imunkin <[email protected]> | 2024-11-08 10:00:23 +0300 |
---|---|---|
committer | imunkin <[email protected]> | 2024-11-08 10:12:13 +0300 |
commit | a784a2f943d6e15caa6241e2e96d80aac6dbf375 (patch) | |
tree | 05f1e5366c916b988a8afb75bdab8ddeee0f6e6d /yql/essentials/udfs/common/url_base/lib/url_parse.h | |
parent | d70137a7b530ccaa52834274913bbb5a3d1ca06e (diff) |
Move yql/udfs/common/ to /yql/essentials YQL-19206
Except the following directories:
* clickhouse/client
* datetime
* knn
* roaring
commit_hash:c7da95636144d28db109d6b17ddc762e9bacb59f
Diffstat (limited to 'yql/essentials/udfs/common/url_base/lib/url_parse.h')
-rw-r--r-- | yql/essentials/udfs/common/url_base/lib/url_parse.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/yql/essentials/udfs/common/url_base/lib/url_parse.h b/yql/essentials/udfs/common/url_base/lib/url_parse.h new file mode 100644 index 00000000000..b0a1679d1e9 --- /dev/null +++ b/yql/essentials/udfs/common/url_base/lib/url_parse.h @@ -0,0 +1,59 @@ +#pragma once + +#include <yql/essentials/public/udf/udf_helpers.h> +#include <library/cpp/uri/uri.h> + +#define FIELD_MAP(XX) \ + XX(Scheme) \ + XX(User) \ + XX(Pass) \ + XX(Host) \ + XX(Port) \ + XX(Path) \ + XX(Query) \ + XX(Frag) + +#define FIELD_INDEXES(name) ui32 name; + +namespace NUrlUdf { + using namespace NUri; + using namespace NKikimr; + using namespace NUdf; + + struct TUrlParseIndexes { + ui32 ParseError; + FIELD_MAP(FIELD_INDEXES) + }; + + class TParse: public TBoxedValue { + public: + TParse(const TUrlParseIndexes& UrlParseIndexes) + : UrlParseIndexes(UrlParseIndexes) + , ParseFlags(TUri::FeaturesRecommended) + { + } + + static const TStringRef& Name() { + static auto nameRef = TStringRef("Parse"); + return nameRef; + } + + private: + TUnboxedValue Run( + const IValueBuilder* valueBuilder, + const TUnboxedValuePod* args) const override; + + public: + static bool DeclareSignature( + const TStringRef& name, + TType* userType, + IFunctionTypeInfoBuilder& builder, + bool typesOnly); + + private: + const TUrlParseIndexes UrlParseIndexes; + const NUri::TParseFlags ParseFlags; + + static constexpr ui32 FieldsCount = sizeof(TUrlParseIndexes) / sizeof(ui32); + }; +} |