Files
IQ.Pilot/iqpilot/tools/replay/api.h
2026-09-02 15:07:09 -05:00

34 lines
1.4 KiB
C++

#pragma once
#include <curl/curl.h>
#include <cstdint>
#include <string>
#include "common/util.h"
#include "third_party/json11/json11.hpp"
namespace CommaApi2 {
const std::string BASE_URL = util::getenv("API_HOST", "https://api-iqlabs.konn3kt.com").c_str();
std::string create_token(bool use_jwt, const json11::Json& payloads = {}, int expiry = 3600);
std::string httpGet(const std::string &url, long *response_code = nullptr);
// konn3kt equivalents of upstream's PyDownloader API helpers. Same endpoints and
// same response shapes, but served over the C++/libcurl path instead of shelling
// into tools/lib. On failure they return {"error": "<code>"} so callers can tell
// unauthorized from a transport error without a second out-param.
std::string getRouteFiles(const std::string &route);
std::string getDevices();
std::string getDeviceRoutes(const std::string &dongle_id, int64_t start_ms = 0, int64_t end_ms = 0, bool preserved = false);
// Endpoint paths, relative to BASE_URL. Split out from the fetchers so the konn3kt
// routing can be asserted without network access.
std::string routeFilesPath(const std::string &route);
std::string devicesPath();
std::string deviceRoutesPath(const std::string &dongle_id, int64_t start_ms, int64_t end_ms, bool preserved);
// Maps an HTTP status + body to either the body or an {"error": ...} envelope.
std::string apiResponse(const std::string &body, long response_code);
} // namespace CommaApi2