8 #include "gtest/gtest_prod.h"
11 #include "httpinterface.h"
12 #include "logging/logging.h"
13 #include "utilities/utils.h"
30 HttpClient(
const std::vector<std::string> *extra_headers =
nullptr);
33 HttpResponse get(
const std::string &url, int64_t maxsize)
override;
34 HttpResponse post(
const std::string &url,
const std::string &content_type,
const std::string &
data)
override;
36 HttpResponse put(
const std::string &url,
const std::string &content_type,
const std::string &
data)
override;
39 HttpResponse download(
const std::string &url, curl_write_callback write_cb, curl_xferinfo_callback progress_cb,
40 void *userp, curl_off_t from)
override;
41 std::future<HttpResponse> downloadAsync(
const std::string &url, curl_write_callback write_cb,
42 curl_xferinfo_callback progress_cb,
void *userp, curl_off_t from,
43 CurlHandler *easyp)
override;
44 void setCerts(
const std::string &ca, CryptoSource ca_source,
const std::string &cert, CryptoSource cert_source,
45 const std::string &pkey, CryptoSource pkey_source)
override;
46 bool updateHeader(
const std::string &name,
const std::string &value);
49 FRIEND_TEST(GetTest, download_speed_limit);
54 HttpResponse perform(CURL *curl_handler,
int retry_times, int64_t size_limit);
55 static curl_slist *curl_slist_dup(curl_slist *sl);
57 static CURLcode sslCtxFunction(CURL *handle,
void *sslctx,
void *parm);
58 std::unique_ptr<TemporaryFile> tls_ca_file;
59 std::unique_ptr<TemporaryFile> tls_cert_file;
60 std::unique_ptr<TemporaryFile> tls_pkey_file;
61 static const int RETRY_TIMES = 2;
62 static const long kSpeedLimitTimeInterval = 60L;
63 static const long kSpeedLimitBytesPerSec = 5000L;
65 long speed_limit_time_interval_{kSpeedLimitTimeInterval};
66 long speed_limit_bytes_per_sec_{kSpeedLimitBytesPerSec};
67 void overrideSpeedLimitParams(
long time_interval,
long bytes_per_sec) {
68 speed_limit_time_interval_ = time_interval;
69 speed_limit_bytes_per_sec_ = bytes_per_sec;
71 bool pkcs11_key{
false};
72 bool pkcs11_cert{
false};