From 84bd17328a4dc027e689ca7b2a85744d6e2b7cf5 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 13 Sep 2025 13:24:23 +0100 Subject: Create and perform UA lookup curl op when new user agent is encountered --- src/curlOp.hpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/curlOp.hpp (limited to 'src/curlOp.hpp') diff --git a/src/curlOp.hpp b/src/curlOp.hpp new file mode 100644 index 0000000..ce42fb4 --- /dev/null +++ b/src/curlOp.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include "util.hpp" +#include +#include +#include +#include +#include + +namespace WebStat { + class CurlError : public std::runtime_error { + public: + explicit CurlError(CURLcode code, const char * msg) : std::runtime_error {msg}, code(code) { } + + CURLcode code; + }; + + using CurlPtr = std::unique_ptr>; + using CurlMimePtr = std::unique_ptr>; + using CurlErrorBuf = std::array; + using CurlMultiPtr = std::unique_ptr>; + + class CurlOperation { + public: + CurlOperation(); + virtual ~CurlOperation() = default; + + SPECIAL_MEMBERS_DEFAULT_MOVE_NO_COPY(CurlOperation); + + void addForm(const char * name, std::string_view data); + + virtual void whenComplete(DB::Connection *) const = 0; + virtual void onError(DB::Connection *) const; + + CurlPtr hnd; + CurlMimePtr mime; + CurlErrorBuf err; + std::string result; + }; +} -- cgit v1.2.3