62 const components::ComponentContext& component_context,
63 bool is_monitor =
false
66 ~HttpHandlerBase()
override;
72 virtual const std::string& HandlerName()
const;
78 HttpHandlerStatisticsAggregate& GetHandlerStatistics()
const;
87 std::string GetResponseDataForLoggingChecked(
88 const http::HttpRequest& request,
89 request::RequestContext& context,
90 const std::string& response_data
93 std::string GetUrlForLoggingChecked(
const http::HttpRequest& request,
request::RequestContext& context)
const;
98 const http::HttpRequest& request,
99 request::RequestContext& context,
106 const http::HttpRequest& request,
107 request::RequestContext& context,
108 const std::exception& ex
117 static yaml_config::Schema GetStaticConfigSchema();
125 [[
noreturn]]
void ThrowUnsupportedHttpMethod(
const http::HttpRequest& request)
const;
157 virtual bool IsStreamed()
const {
return is_body_streamed_; }
169 const http::HttpRequest& request,
170 request::RequestContext& context,
171 const std::string& request_body
176 const http::HttpRequest& request,
177 request::RequestContext& context,
178 const std::string& response_data
188 virtual std::string GetMetaType(
const http::HttpRequest&)
const;
191 friend class middlewares::HandlerAdapter;
192 friend class middlewares::HandlerMetrics;
193 friend class middlewares::Auth;
195 void HandleHttpRequest(
http::HttpRequest& request,
request::RequestContext& context)
const;
197 void HandleRequestStream(
http::HttpRequest& http_request,
request::RequestContext& context)
const;
199 std::string GetRequestBodyForLoggingChecked(
200 const http::HttpRequest& request,
201 request::RequestContext& context,
202 const std::string& request_body
205 template <
typename HttpStatistics>
206 void FormatStatistics(
utils::statistics::Writer result,
const HttpStatistics& stats);
208 void FormatPerLabelStatistics(
utils::statistics::Writer result)
const;
210 void SetResponseServerHostname(
http::HttpResponse& response)
const;
212 void BuildMiddlewarePipeline(
const components::ComponentConfig&,
const components::ComponentContext&);
214 const dynamic_config::Source config_source_;
216 const std::string handler_name_;
217 std::optional<logging::
Level> log_level_;
218 std::unordered_map<
int, logging::
Level> log_level_for_status_codes_;
220 std::unique_ptr<HttpHandlerStatisticsAggregate> handler_statistics_;
222 bool set_response_server_hostname_;
223 bool is_body_streamed_;