MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / headersFilter

Function headersFilter

src/Server/HTTPHandlerRequestFilter.cpp:172–197  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

170}
171
172HTTPRequestFilter headersFilter(const Poco::Util::AbstractConfiguration & config, const std::string & prefix, HTTPRequestFilterMatchType match_type)
173{
174 std::unordered_map<String, FilterExpression> headers_expression;
175 Poco::Util::AbstractConfiguration::Keys headers_name;
176 config.keys(prefix, headers_name);
177
178 for (const auto & header_name : headers_name)
179 {
180 const auto & expression = getExpression(
181 config.getString(prefix + "." + header_name), match_type, /* ignore_query_string= */ false);
182 checkExpression("", expression); /// Check expression syntax is correct
183 headers_expression.emplace(std::make_pair(header_name, expression));
184 }
185
186 return [headers_expression](const HTTPServerRequest & request)
187 {
188 for (const auto & [header_name, header_expression] : headers_expression)
189 {
190 const auto header_value = request.get(header_name, "");
191 if (!checkExpression(std::string_view(header_value.data(), header_value.size()), header_expression))
192 return false;
193 }
194
195 return true;
196 };
197}
198
199std::vector<HTTPRequestFilter> extractHTTPRequestFiltersFromConfig(const Poco::Util::AbstractConfiguration & config, const std::string & config_prefix)
200{

Callers 1

Calls 9

getExpressionFunction · 0.85
checkExpressionFunction · 0.85
string_viewClass · 0.85
keysMethod · 0.80
getStringMethod · 0.45
emplaceMethod · 0.45
getMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected