tgbot-cpp
Loading...
Searching...
No Matches
HttpClient.h
Go to the documentation of this file.
1#pragma once
2
4#include "tgbot/export.h"
5
6#include <atomic>
7#include <cstdint>
8#include <span>
9#include <string>
10
11namespace TgBot {
12
19public:
20 virtual ~HttpClient() = default;
21
27 virtual std::string makeRequest(const std::string& url, std::span<const HttpFormField> fields) const = 0;
28
29 std::int32_t _timeout = 25;
30
34 virtual int getRequestMaxRetries() const {
35 return requestMaxRetries;
36 }
37
41 virtual int getRequestBackoff() const {
42 return requestBackoff;
43 }
44
51 virtual void cancel(const bool eternal = false) const {
52 if (eternal) {
53 _isEternalCancel.store(true);
54 } else {
55 _cancelEpoch.fetch_add(1);
56 }
57 }
58
62 virtual bool isEternalCancelled() const {
63 return _isEternalCancel.load();
64 }
65
69 virtual const std::string& getCancelExceptionText() const {
70 return cancelExceptionText;
71 }
72
73protected:
77 mutable std::atomic<bool> _isEternalCancel { false };
78
82 mutable std::atomic<uint64_t> _cancelEpoch { 0 };
83
84private:
85 int requestMaxRetries = 3;
86 int requestBackoff = 1;
87 const std::string cancelExceptionText = "request cancelled";
88};
89
90} // namespace TgBot
This class makes http requests.
Definition HttpClient.h:18
virtual void cancel(const bool eternal=false) const
Cancels the requests.
Definition HttpClient.h:51
virtual ~HttpClient()=default
virtual const std::string & getCancelExceptionText() const
Get the exception message that occurs when the request is aborted.
Definition HttpClient.h:69
std::atomic< uint64_t > _cancelEpoch
Counter used to invalidate current requests.
Definition HttpClient.h:82
virtual bool isEternalCancelled() const
Checks if the HTTP client is permanently disabled.
Definition HttpClient.h:62
virtual std::string makeRequest(const std::string &url, std::span< const HttpFormField > fields) const =0
Sends a request to the url.
std::int32_t _timeout
Definition HttpClient.h:29
virtual int getRequestBackoff() const
Get the makeRequest() backoff duration between retries, in seconds.
Definition HttpClient.h:41
virtual int getRequestMaxRetries() const
Get the maximum number of makeRequest() retries before giving up and throwing an exception.
Definition HttpClient.h:34
std::atomic< bool > _isEternalCancel
Flag indicating whether the HTTP client is permanently disabled.
Definition HttpClient.h:77
#define TGBOT_API
Definition export.h:5
Definition Api.h:17