aboutsummaryrefslogtreecommitdiff
path: root/libbutl/curl.ixx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2024-02-23 18:50:28 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2024-02-26 16:38:49 +0300
commita1ea72d719b63a4d2b6421ce2e53b7e3ab12a8a1 (patch)
tree8c5e9e1c044586cee0cc16dd66e78f70b4d33c3f /libbutl/curl.ixx
parent14049ee7c5880b9e33a3e295d19ed6b36edab567 (diff)
Add curl constructors which allow to adjust curl command line
Diffstat (limited to 'libbutl/curl.ixx')
-rw-r--r--libbutl/curl.ixx73
1 files changed, 73 insertions, 0 deletions
diff --git a/libbutl/curl.ixx b/libbutl/curl.ixx
index b7f6496..6dcfe13 100644
--- a/libbutl/curl.ixx
+++ b/libbutl/curl.ixx
@@ -16,6 +16,7 @@ namespace butl
O&& out,
E&& err,
method_type m,
+ flags fs,
const std::string& url,
A&&... options)
: curl ([] (const char* [], std::size_t) {},
@@ -23,8 +24,80 @@ namespace butl
std::forward<O> (out),
std::forward<E> (err),
m,
+ fs,
url,
std::forward<A> (options)...)
{
}
+
+ template <typename C,
+ typename I,
+ typename O,
+ typename E,
+ typename... A>
+ inline curl::
+ curl (const C& cmdc,
+ I&& in,
+ O&& out,
+ E&& err,
+ method_type m,
+ const std::string& url,
+ A&&... options)
+ : curl (cmdc,
+ std::forward<I> (in),
+ std::forward<O> (out),
+ std::forward<E> (err),
+ m,
+ flags::none,
+ url,
+ std::forward<A> (options)...)
+ {
+ }
+
+ template <typename I,
+ typename O,
+ typename E,
+ typename... A>
+ inline curl::
+ curl (I&& in,
+ O&& out,
+ E&& err,
+ method_type m,
+ const std::string& url,
+ A&&... options)
+ : curl (std::forward<I> (in),
+ std::forward<O> (out),
+ std::forward<E> (err),
+ m,
+ flags::none,
+ url,
+ std::forward<A> (options)...)
+ {
+ }
+
+ inline curl::flags
+ operator&= (curl::flags& x, curl::flags y)
+ {
+ return x = static_cast<curl::flags> (static_cast<std::uint16_t> (x) &
+ static_cast<std::uint16_t> (y));
+ }
+
+ inline curl::flags
+ operator|= (curl::flags& x, curl::flags y)
+ {
+ return x = static_cast<curl::flags> (static_cast<std::uint16_t> (x) |
+ static_cast<std::uint16_t> (y));
+ }
+
+ inline curl::flags
+ operator& (curl::flags x, curl::flags y)
+ {
+ return x &= y;
+ }
+
+ inline curl::flags
+ operator| (curl::flags x, curl::flags y)
+ {
+ return x |= y;
+ }
}