mirror of
https://github.com/BlackMATov/curly.hpp.git
synced 2026-01-04 23:26:52 +07:00
add callback param to request_builder
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
namespace curly_hpp
|
namespace curly_hpp
|
||||||
{
|
{
|
||||||
@@ -48,6 +49,9 @@ namespace curly_hpp
|
|||||||
using time_ms_t = std::chrono::milliseconds;
|
using time_ms_t = std::chrono::milliseconds;
|
||||||
using time_point_t = std::chrono::steady_clock::time_point;
|
using time_point_t = std::chrono::steady_clock::time_point;
|
||||||
|
|
||||||
|
class request;
|
||||||
|
using callback_t = std::function<void(request)>;
|
||||||
|
|
||||||
class upload_handler {
|
class upload_handler {
|
||||||
public:
|
public:
|
||||||
virtual ~upload_handler() {}
|
virtual ~upload_handler() {}
|
||||||
@@ -176,6 +180,7 @@ namespace curly_hpp
|
|||||||
|
|
||||||
request_builder& content(std::string_view b);
|
request_builder& content(std::string_view b);
|
||||||
request_builder& content(content_t b) noexcept;
|
request_builder& content(content_t b) noexcept;
|
||||||
|
request_builder& callback(callback_t c) noexcept;
|
||||||
request_builder& uploader(uploader_uptr u) noexcept;
|
request_builder& uploader(uploader_uptr u) noexcept;
|
||||||
request_builder& downloader(downloader_uptr d) noexcept;
|
request_builder& downloader(downloader_uptr d) noexcept;
|
||||||
|
|
||||||
@@ -193,6 +198,9 @@ namespace curly_hpp
|
|||||||
content_t& content() noexcept;
|
content_t& content() noexcept;
|
||||||
const content_t& content() const noexcept;
|
const content_t& content() const noexcept;
|
||||||
|
|
||||||
|
callback_t& callback() noexcept;
|
||||||
|
const callback_t& callback() const noexcept;
|
||||||
|
|
||||||
uploader_uptr& uploader() noexcept;
|
uploader_uptr& uploader() noexcept;
|
||||||
const uploader_uptr& uploader() const noexcept;
|
const uploader_uptr& uploader() const noexcept;
|
||||||
|
|
||||||
@@ -201,16 +209,22 @@ namespace curly_hpp
|
|||||||
|
|
||||||
request send();
|
request send();
|
||||||
|
|
||||||
|
template < typename Callback >
|
||||||
|
request_builder& callback(Callback&& f) {
|
||||||
|
static_assert(std::is_convertible_v<Callback, callback_t>);
|
||||||
|
return callback(callback_t(std::forward<Callback>(f)));
|
||||||
|
}
|
||||||
|
|
||||||
template < typename Uploader, typename... Args >
|
template < typename Uploader, typename... Args >
|
||||||
request_builder& uploader(Args&&... args) {
|
request_builder& uploader(Args&&... args) {
|
||||||
return uploader(std::make_unique<Uploader>(
|
static_assert(std::is_base_of_v<upload_handler, Uploader>);
|
||||||
std::forward<Args>(args)...));
|
return uploader(std::make_unique<Uploader>(std::forward<Args>(args)...));
|
||||||
}
|
}
|
||||||
|
|
||||||
template < typename Downloader, typename... Args >
|
template < typename Downloader, typename... Args >
|
||||||
request_builder& downloader(Args&&... args) {
|
request_builder& downloader(Args&&... args) {
|
||||||
return downloader(std::make_unique<Downloader>(
|
static_assert(std::is_base_of_v<download_handler, Downloader>);
|
||||||
std::forward<Args>(args)...));
|
return downloader(std::make_unique<Downloader>(std::forward<Args>(args)...));
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
std::string url_;
|
std::string url_;
|
||||||
@@ -224,6 +238,7 @@ namespace curly_hpp
|
|||||||
time_sec_t connection_timeout_{20u};
|
time_sec_t connection_timeout_{20u};
|
||||||
private:
|
private:
|
||||||
content_t content_;
|
content_t content_;
|
||||||
|
callback_t callback_;
|
||||||
uploader_uptr uploader_;
|
uploader_uptr uploader_;
|
||||||
downloader_uptr downloader_;
|
downloader_uptr downloader_;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
|
|
||||||
#ifndef NOMINMAX
|
#ifndef NOMINMAX
|
||||||
@@ -759,6 +758,11 @@ namespace curly_hpp
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
request_builder& request_builder::callback(callback_t c) noexcept {
|
||||||
|
callback_ = std::move(c);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
request_builder& request_builder::uploader(uploader_uptr u) noexcept {
|
request_builder& request_builder::uploader(uploader_uptr u) noexcept {
|
||||||
uploader_ = std::move(u);
|
uploader_ = std::move(u);
|
||||||
return *this;
|
return *this;
|
||||||
@@ -813,6 +817,14 @@ namespace curly_hpp
|
|||||||
return content_;
|
return content_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
callback_t& request_builder::callback() noexcept {
|
||||||
|
return callback_;
|
||||||
|
}
|
||||||
|
|
||||||
|
const callback_t& request_builder::callback() const noexcept {
|
||||||
|
return callback_;
|
||||||
|
}
|
||||||
|
|
||||||
uploader_uptr& request_builder::uploader() noexcept {
|
uploader_uptr& request_builder::uploader() noexcept {
|
||||||
return uploader_;
|
return uploader_;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user