1#include <userver/utest/using_namespace_userver.hpp>
3#include <userver/easy.hpp>
4#include <userver/yaml_config/merge_schemas.hpp>
6#include <userver/clients/dns/component.hpp>
7#include <userver/clients/http/component.hpp>
8#include <userver/clients/http/component_list.hpp>
9#include <userver/components/component_context.hpp>
10#include <userver/components/minimal_server_component_list.hpp>
11#include <userver/server/handlers/http_handler_base.hpp>
12#include <userver/server/handlers/ping.hpp>
13#include <userver/server/handlers/tests_control.hpp>
14#include <userver/storages/postgres/component.hpp>
15#include <userver/testsuite/testsuite_support.hpp>
16#include <userver/utils/daemon_run.hpp>
21 static constexpr std::string_view kName =
"action-client";
23 ActionClient(
const components::ComponentConfig& config,
const components::ComponentContext& context)
25 service_url_(config
["service-url"].As<std
::string
>()),
29 auto CreateHttpRequest(std::string action)
const {
33 static yaml_config::Schema GetStaticConfigSchema() {
35 type: object
36 description: My dependencies schema
37 additionalProperties: false
38 properties:
39 service-url:
40 type: string
41 description: URL of the service to send the actions to
42 )");
46 const std::string service_url_;
47 clients::http::
Client& http_client_;
54 explicit ActionDep(
const components::ComponentContext& config)
57 auto CreateActionRequest(std::string action)
const {
return component_.CreateHttpRequest(std::move(action)); }
59 static void RegisterOn(
easy::HttpBase& app) {
60 app
.TryAddComponent<ActionClient
>(ActionClient::kName
, "service-url: http://some-service.example/v1/action");
65 ActionClient& component_;
74 MyHandler(
const components::ComponentConfig& config,
const components::ComponentContext& component_context)
79 std::string HandleRequestThrow(
const server::
http::HttpRequest& request, server::
request::RequestContext&)
81 const auto& action = request
.GetArg("action");
84 "INSERT INTO events_table(action) VALUES($1)",
87 return deps_.CreateActionRequest(action)->
body();
94int main(
int argc,
char* argv[]) {