/
uzer_007
/
reindexer
Обзор
Документация
Войти
/
uzer_007
/
reindexer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
cpp_src/core/embedding/httpconnector.cc
66 строк
2 KB
madschemas
Update to version v5.10.0
29 дек 2025, 14:43
29 дек 2025, 14:43
28ca522
Код
Авторство
О чём код?
#include "core/embedding/httpconnector.h" #include "estl/chunk.h" // #define CPPHTTPLIB_OPENSSL_SUPPORT // ToDo #include "vendor/cpp-httplib/httplib.h" namespace reindexer { namespace { const std::string kContentType{"application/json"}; } HttpConnector::HttpConnector(const std::string& url) : url_{url} {} HttpConnector::~HttpConnector() { try { Disconnect(); // NOLINTBEGIN(bugprone-empty-catch) } catch (...) { } // NOLINTEND(bugprone-empty-catch) } bool HttpConnector::Connect(size_t connect_timeout_ms, size_t read_timeout_ms, size_t write_timeout_ms) { if (client_ && client_->is_valid()) { return true; } client_ = std::make_unique<httplib::Client>(url_); client_->set_connection_timeout(0, connect_timeout_ms * 1'000); client_->set_read_timeout(0, read_timeout_ms * 1'000); client_->set_write_timeout(0, write_timeout_ms * 1'000); client_->set_keep_alive(true); return client_->is_valid(); } HttpConnector::Response HttpConnector::Send(const std::string& path, chunk&& json) { if (!client_) { return {false, "Connect before"}; } auto res = client_->Post(path, {}, reinterpret_cast<char*>(json.data()), json.size(), kContentType, nullptr); Response response; if (res) { response.ok = (res->status == httplib::StatusCode::OK_200); response.content = response.ok ? res->body : res->reason; response.read_bytes = res->read_bytes; response.write_bytes = res->write_bytes; } else { response.ok = false; response.content = "Unexpected problem with client, error: " + to_string(res.error()); } return response; } bool HttpConnector::Connected() const { return (client_) ? client_->is_valid() : false; } void HttpConnector::Disconnect() { if (client_) { client_->stop(); client_.reset(); } } } // namespace reindexer