minor: yugioh support added

This commit is contained in:
Sebastian Dine
2026-05-09 19:32:18 +02:00
committed by GitHub
parent 6f575f4cec
commit 6ff4406638
68 changed files with 4994 additions and 134 deletions
+14
View File
@@ -7,17 +7,31 @@
#include "ccm/ports/IHttpClient.hpp"
#include <chrono>
#include <memory>
#include <mutex>
namespace cpr { class Session; }
namespace ccm {
// Concrete IHttpClient backed by libcpr/libcurl. The single owned
// `cpr::Session` keeps libcurl's connection pool alive across calls, so
// repeat HTTPS requests to the same host (api.scryfall.com, yugipedia.com,
// ms.yugipedia.com, …) reuse the existing TLS connection instead of paying
// for a fresh handshake every time. Concurrent calls are serialized through
// a mutex - libcurl easy handles are not thread-safe, and the preview path
// only fires one outbound request at a time anyway.
class CprHttpClient final : public IHttpClient {
public:
explicit CprHttpClient(std::chrono::milliseconds timeout = std::chrono::milliseconds{30000});
~CprHttpClient() override;
Result<std::string> get(std::string_view url) override;
private:
std::chrono::milliseconds timeout_;
std::unique_ptr<cpr::Session> session_;
std::mutex sessionMutex_;
};
} // namespace ccm