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

Function addCommonDefaultHandlersFactory

src/Server/HTTPHandlerFactory.cpp:336–434  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

334
335
336void addCommonDefaultHandlersFactory(HTTPRequestHandlerFactoryMain & factory, IServer & server, const Poco::Util::AbstractConfiguration & config)
337{
338 if (config.has("http_server_default_response"))
339 {
340 auto root_creator = [&server]() -> std::unique_ptr<StaticRequestHandler>
341 {
342 constexpr auto root_response_expression = "config://http_server_default_response";
343 return std::make_unique<StaticRequestHandler>(
344 server, root_response_expression, parseHTTPResponseHeaders("text/html; charset=UTF-8"));
345 };
346 auto root_handler = std::make_shared<HandlingRuleHTTPHandlerFactory<StaticRequestHandler>>(std::move(root_creator));
347 root_handler->attachStrictPath("/");
348 root_handler->allowGetAndHeadRequest();
349 factory.addHandler(root_handler);
350 }
351 else
352 {
353 /// Use the default landing page / ping handler.
354 auto root_handler = std::make_shared<HandlingRuleHTTPHandlerFactory<IndexRequestHandler>>(server);
355 root_handler->attachStrictPath("/");
356 root_handler->allowGetAndHeadRequest();
357 factory.addHandler(root_handler);
358 }
359
360 auto ping_handler = createPingHandlerFactory(server);
361 ping_handler->attachStrictPath("/ping");
362 ping_handler->allowGetAndHeadRequest();
363 factory.addPathToHints("/ping");
364 factory.addHandler(ping_handler);
365
366 auto replicas_status_handler = std::make_shared<HandlingRuleHTTPHandlerFactory<ReplicasStatusHandler>>(server);
367 replicas_status_handler->attachNonStrictPath("/replicas_status");
368 replicas_status_handler->allowGetAndHeadRequest();
369 factory.addPathToHints("/replicas_status");
370 factory.addHandler(replicas_status_handler);
371
372 auto play_handler = std::make_shared<HandlingRuleHTTPHandlerFactory<PlayWebUIRequestHandler>>(server);
373 play_handler->attachNonStrictPath("/play");
374 play_handler->allowGetAndHeadRequest();
375 factory.addPathToHints("/play");
376 factory.addHandler(play_handler);
377
378 auto dashboard_handler = std::make_shared<HandlingRuleHTTPHandlerFactory<DashboardWebUIRequestHandler>>(server);
379 dashboard_handler->attachNonStrictPath("/dashboard");
380 dashboard_handler->allowGetAndHeadRequest();
381 factory.addPathToHints("/dashboard");
382 factory.addHandler(dashboard_handler);
383
384 auto binary_handler = std::make_shared<HandlingRuleHTTPHandlerFactory<BinaryWebUIRequestHandler>>(server);
385 binary_handler->attachNonStrictPath("/binary");
386 binary_handler->allowGetAndHeadRequest();
387 factory.addPathToHints("/binary");
388 factory.addHandler(binary_handler);
389
390 auto merges_handler = std::make_shared<HandlingRuleHTTPHandlerFactory<MergesWebUIRequestHandler>>(server);
391 merges_handler->attachNonStrictPath("/merges");
392 merges_handler->allowGetAndHeadRequest();
393 factory.addPathToHints("/merges");

Callers 2

Calls 9

parseHTTPResponseHeadersFunction · 0.85
createPingHandlerFactoryFunction · 0.85
attachStrictPathMethod · 0.80
attachNonStrictPathMethod · 0.80
hasMethod · 0.45
addHandlerMethod · 0.45
addPathToHintsMethod · 0.45
configMethod · 0.45

Tested by

no test coverage detected