mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-10-15 10:04:44 +00:00
Update generate pipeline to add OpenAI api as an additional backend (for comparison testing), add brewery coordinates (#244)
* add brewery coordinates * Add openai mode * Add coordinates to schema * Fix C++ review findings in pipeline: k-prefixed enum values, include ordering, populated validation error messages, conventional const notation, and endl replaced with newline
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "services/logging/logger.h"
|
||||
|
||||
@@ -67,6 +68,44 @@ std::string HttpWebClient::Get(const std::string& url) {
|
||||
return result->body;
|
||||
}
|
||||
|
||||
std::string HttpWebClient::Post(
|
||||
const std::string& url, const std::string& body,
|
||||
const std::vector<std::pair<std::string, std::string>>& headers) {
|
||||
const auto [origin, path] = SplitUrl(url);
|
||||
|
||||
httplib::Client client(origin);
|
||||
client.set_follow_location(true);
|
||||
client.set_connection_timeout(kConnectionTimeoutSeconds);
|
||||
client.set_read_timeout(kReadTimeoutSeconds);
|
||||
|
||||
httplib::Headers httplib_headers;
|
||||
for (const auto& [name, value] : headers) {
|
||||
httplib_headers.emplace(name, value);
|
||||
}
|
||||
|
||||
const httplib::Result result =
|
||||
client.Post(path, httplib_headers, body, "application/json");
|
||||
|
||||
if (!result) {
|
||||
throw std::runtime_error(
|
||||
std::format("[HttpWebClient] Request failed for URL: {} — {}", url,
|
||||
httplib::to_string(result.error())));
|
||||
}
|
||||
|
||||
if (result->status < kSuccessMin || result->status >= kSuccessMax) {
|
||||
if (logger_) {
|
||||
logger_->Log({.level = LogLevel::Error,
|
||||
.phase = PipelinePhase::Enrichment,
|
||||
.message = std::format(
|
||||
"[HttpWebClient] Request failed for URL: {}", url)});
|
||||
}
|
||||
throw std::runtime_error(std::format(
|
||||
"[HttpWebClient] HTTP {} for URL: {}", result->status, url));
|
||||
}
|
||||
|
||||
return result->body;
|
||||
}
|
||||
|
||||
std::string HttpWebClient::EncodeURL(const std::string& value) {
|
||||
return httplib::encode_uri_component(value);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user