@@ -1421,14 +1421,18 @@ class ClientImpl {
14211421 Result Post (const std::string &path, const char *body, size_t content_length, const std::string &content_type, UploadProgress progress = nullptr );
14221422 Result Post (const std::string &path, const std::string &body, const std::string &content_type, UploadProgress progress = nullptr );
14231423 Result Post (const std::string &path, size_t content_length, ContentProvider content_provider, const std::string &content_type, UploadProgress progress = nullptr );
1424+ Result Post (const std::string &path, size_t content_length, ContentProvider content_provider, const std::string &content_type, ContentReceiver content_receiver, UploadProgress progress = nullptr );
14241425 Result Post (const std::string &path, ContentProviderWithoutLength content_provider, const std::string &content_type, UploadProgress progress = nullptr );
1426+ Result Post (const std::string &path, ContentProviderWithoutLength content_provider, const std::string &content_type, ContentReceiver content_receiver, UploadProgress progress = nullptr );
14251427 Result Post (const std::string &path, const Params ¶ms);
14261428 Result Post (const std::string &path, const UploadFormDataItems &items, UploadProgress progress = nullptr );
14271429 Result Post (const std::string &path, const Headers &headers);
14281430 Result Post (const std::string &path, const Headers &headers, const char *body, size_t content_length, const std::string &content_type, UploadProgress progress = nullptr );
14291431 Result Post (const std::string &path, const Headers &headers, const std::string &body, const std::string &content_type, UploadProgress progress = nullptr );
14301432 Result Post (const std::string &path, const Headers &headers, size_t content_length, ContentProvider content_provider, const std::string &content_type, UploadProgress progress = nullptr );
1433+ Result Post (const std::string &path, const Headers &headers, size_t content_length, ContentProvider content_provider, const std::string &content_type, ContentReceiver content_receiver, DownloadProgress progress = nullptr );
14311434 Result Post (const std::string &path, const Headers &headers, ContentProviderWithoutLength content_provider, const std::string &content_type, UploadProgress progress = nullptr );
1435+ Result Post (const std::string &path, const Headers &headers, ContentProviderWithoutLength content_provider, const std::string &content_type, ContentReceiver content_receiver, DownloadProgress progress = nullptr );
14321436 Result Post (const std::string &path, const Headers &headers, const Params ¶ms);
14331437 Result Post (const std::string &path, const Headers &headers, const UploadFormDataItems &items, UploadProgress progress = nullptr );
14341438 Result Post (const std::string &path, const Headers &headers, const UploadFormDataItems &items, const std::string &boundary, UploadProgress progress = nullptr );
@@ -1775,14 +1779,18 @@ class Client {
17751779 Result Post (const std::string &path, const char *body, size_t content_length, const std::string &content_type, UploadProgress progress = nullptr );
17761780 Result Post (const std::string &path, const std::string &body, const std::string &content_type, UploadProgress progress = nullptr );
17771781 Result Post (const std::string &path, size_t content_length, ContentProvider content_provider, const std::string &content_type, UploadProgress progress = nullptr );
1782+ Result Post (const std::string &path, size_t content_length, ContentProvider content_provider, const std::string &content_type, ContentReceiver content_receiver, UploadProgress progress = nullptr );
17781783 Result Post (const std::string &path, ContentProviderWithoutLength content_provider, const std::string &content_type, UploadProgress progress = nullptr );
1784+ Result Post (const std::string &path, ContentProviderWithoutLength content_provider, const std::string &content_type, ContentReceiver content_receiver, UploadProgress progress = nullptr );
17791785 Result Post (const std::string &path, const Params ¶ms);
17801786 Result Post (const std::string &path, const UploadFormDataItems &items, UploadProgress progress = nullptr );
17811787 Result Post (const std::string &path, const Headers &headers);
17821788 Result Post (const std::string &path, const Headers &headers, const char *body, size_t content_length, const std::string &content_type, UploadProgress progress = nullptr );
17831789 Result Post (const std::string &path, const Headers &headers, const std::string &body, const std::string &content_type, UploadProgress progress = nullptr );
17841790 Result Post (const std::string &path, const Headers &headers, size_t content_length, ContentProvider content_provider, const std::string &content_type, UploadProgress progress = nullptr );
1791+ Result Post (const std::string &path, const Headers &headers, size_t content_length, ContentProvider content_provider, const std::string &content_type, ContentReceiver content_receiver, DownloadProgress progress = nullptr );
17851792 Result Post (const std::string &path, const Headers &headers, ContentProviderWithoutLength content_provider, const std::string &content_type, UploadProgress progress = nullptr );
1793+ Result Post (const std::string &path, const Headers &headers, ContentProviderWithoutLength content_provider, const std::string &content_type, ContentReceiver content_receiver, DownloadProgress progress = nullptr );
17861794 Result Post (const std::string &path, const Headers &headers, const Params ¶ms);
17871795 Result Post (const std::string &path, const Headers &headers, const UploadFormDataItems &items, UploadProgress progress = nullptr );
17881796 Result Post (const std::string &path, const Headers &headers, const UploadFormDataItems &items, const std::string &boundary, UploadProgress progress = nullptr );
@@ -9815,6 +9823,15 @@ inline Result ClientImpl::Post(const std::string &path, size_t content_length,
98159823 content_type, progress);
98169824}
98179825
9826+ inline Result ClientImpl::Post (const std::string &path, size_t content_length,
9827+ ContentProvider content_provider,
9828+ const std::string &content_type,
9829+ ContentReceiver content_receiver,
9830+ UploadProgress progress) {
9831+ return Post (path, Headers (), content_length, std::move (content_provider),
9832+ content_type, std::move (content_receiver), progress);
9833+ }
9834+
98189835inline Result ClientImpl::Post (const std::string &path,
98199836 ContentProviderWithoutLength content_provider,
98209837 const std::string &content_type,
@@ -9823,6 +9840,15 @@ inline Result ClientImpl::Post(const std::string &path,
98239840 progress);
98249841}
98259842
9843+ inline Result ClientImpl::Post (const std::string &path,
9844+ ContentProviderWithoutLength content_provider,
9845+ const std::string &content_type,
9846+ ContentReceiver content_receiver,
9847+ UploadProgress progress) {
9848+ return Post (path, Headers (), std::move (content_provider), content_type,
9849+ std::move (content_receiver), progress);
9850+ }
9851+
98269852inline Result ClientImpl::Post (const std::string &path, const Headers &headers,
98279853 const Params ¶ms) {
98289854 auto query = detail::params_to_query_str (params);
@@ -9886,6 +9912,43 @@ inline Result ClientImpl::Post(const std::string &path, const Headers &headers,
98869912 nullptr , content_type, progress);
98879913}
98889914
9915+ inline Result ClientImpl::Post (const std::string &path, const Headers &headers,
9916+ size_t content_length,
9917+ ContentProvider content_provider,
9918+ const std::string &content_type,
9919+ ContentReceiver content_receiver,
9920+ DownloadProgress progress) {
9921+ Request req;
9922+ req.method = " POST" ;
9923+ req.path = path;
9924+ req.headers = headers;
9925+ req.content_receiver =
9926+ [content_receiver](const char *data, size_t data_length,
9927+ size_t /* offset*/ , size_t /* total_length*/ ) {
9928+ return content_receiver (data, data_length);
9929+ };
9930+ req.download_progress = std::move (progress);
9931+
9932+ if (max_timeout_msec_ > 0 ) {
9933+ req.start_time_ = std::chrono::steady_clock::now ();
9934+ }
9935+
9936+ if (!content_type.empty ()) { req.set_header (" Content-Type" , content_type); }
9937+
9938+ auto error = Error::Success;
9939+
9940+ auto res = send_with_content_provider (req, nullptr , content_length,
9941+ std::move (content_provider), nullptr ,
9942+ content_type, error);
9943+
9944+ #ifdef CPPHTTPLIB_OPENSSL_SUPPORT
9945+ return Result{std::move (res), error, std::move (req.headers ), last_ssl_error_,
9946+ last_openssl_error_};
9947+ #else
9948+ return Result{std::move (res), error, std::move (req.headers )};
9949+ #endif
9950+ }
9951+
98899952inline Result ClientImpl::Post (const std::string &path, const Headers &headers,
98909953 ContentProviderWithoutLength content_provider,
98919954 const std::string &content_type,
@@ -9895,6 +9958,42 @@ inline Result ClientImpl::Post(const std::string &path, const Headers &headers,
98959958 progress);
98969959}
98979960
9961+ inline Result ClientImpl::Post (const std::string &path, const Headers &headers,
9962+ ContentProviderWithoutLength content_provider,
9963+ const std::string &content_type,
9964+ ContentReceiver content_receiver,
9965+ DownloadProgress progress) {
9966+ Request req;
9967+ req.method = " POST" ;
9968+ req.path = path;
9969+ req.headers = headers;
9970+ req.content_receiver =
9971+ [content_receiver](const char *data, size_t data_length,
9972+ size_t /* offset*/ , size_t /* total_length*/ ) {
9973+ return content_receiver (data, data_length);
9974+ };
9975+ req.download_progress = std::move (progress);
9976+
9977+ if (max_timeout_msec_ > 0 ) {
9978+ req.start_time_ = std::chrono::steady_clock::now ();
9979+ }
9980+
9981+ if (!content_type.empty ()) { req.set_header (" Content-Type" , content_type); }
9982+
9983+ auto error = Error::Success;
9984+
9985+ auto res = send_with_content_provider (req, nullptr , 0 , nullptr ,
9986+ std::move (content_provider),
9987+ content_type, error);
9988+
9989+ #ifdef CPPHTTPLIB_OPENSSL_SUPPORT
9990+ return Result{std::move (res), error, std::move (req.headers ), last_ssl_error_,
9991+ last_openssl_error_};
9992+ #else
9993+ return Result{std::move (res), error, std::move (req.headers )};
9994+ #endif
9995+ }
9996+
98989997inline Result ClientImpl::Post (const std::string &path, const Headers &headers,
98999998 const UploadFormDataItems &items,
99009999 const FormDataProviderItems &provider_items,
@@ -11604,12 +11703,28 @@ inline Result Client::Post(const std::string &path, size_t content_length,
1160411703 return cli_->Post (path, content_length, std::move (content_provider),
1160511704 content_type, progress);
1160611705}
11706+ inline Result Client::Post (const std::string &path, size_t content_length,
11707+ ContentProvider content_provider,
11708+ const std::string &content_type,
11709+ ContentReceiver content_receiver,
11710+ UploadProgress progress) {
11711+ return cli_->Post (path, content_length, std::move (content_provider),
11712+ content_type, std::move (content_receiver), progress);
11713+ }
1160711714inline Result Client::Post (const std::string &path,
1160811715 ContentProviderWithoutLength content_provider,
1160911716 const std::string &content_type,
1161011717 UploadProgress progress) {
1161111718 return cli_->Post (path, std::move (content_provider), content_type, progress);
1161211719}
11720+ inline Result Client::Post (const std::string &path,
11721+ ContentProviderWithoutLength content_provider,
11722+ const std::string &content_type,
11723+ ContentReceiver content_receiver,
11724+ UploadProgress progress) {
11725+ return cli_->Post (path, std::move (content_provider), content_type,
11726+ std::move (content_receiver), progress);
11727+ }
1161311728inline Result Client::Post (const std::string &path, const Headers &headers,
1161411729 size_t content_length,
1161511730 ContentProvider content_provider,
@@ -11618,13 +11733,30 @@ inline Result Client::Post(const std::string &path, const Headers &headers,
1161811733 return cli_->Post (path, headers, content_length, std::move (content_provider),
1161911734 content_type, progress);
1162011735}
11736+ inline Result Client::Post (const std::string &path, const Headers &headers,
11737+ size_t content_length,
11738+ ContentProvider content_provider,
11739+ const std::string &content_type,
11740+ ContentReceiver content_receiver,
11741+ DownloadProgress progress) {
11742+ return cli_->Post (path, headers, content_length, std::move (content_provider),
11743+ content_type, std::move (content_receiver), progress);
11744+ }
1162111745inline Result Client::Post (const std::string &path, const Headers &headers,
1162211746 ContentProviderWithoutLength content_provider,
1162311747 const std::string &content_type,
1162411748 UploadProgress progress) {
1162511749 return cli_->Post (path, headers, std::move (content_provider), content_type,
1162611750 progress);
1162711751}
11752+ inline Result Client::Post (const std::string &path, const Headers &headers,
11753+ ContentProviderWithoutLength content_provider,
11754+ const std::string &content_type,
11755+ ContentReceiver content_receiver,
11756+ DownloadProgress progress) {
11757+ return cli_->Post (path, headers, std::move (content_provider), content_type,
11758+ std::move (content_receiver), progress);
11759+ }
1162811760inline Result Client::Post (const std::string &path, const Params ¶ms) {
1162911761 return cli_->Post (path, params);
1163011762}
@@ -11659,8 +11791,8 @@ inline Result Client::Post(const std::string &path, const Headers &headers,
1165911791 const std::string &content_type,
1166011792 ContentReceiver content_receiver,
1166111793 DownloadProgress progress) {
11662- return cli_->Post (path, headers, body, content_type, content_receiver,
11663- progress);
11794+ return cli_->Post (path, headers, body, content_type,
11795+ std::move (content_receiver), progress);
1166411796}
1166511797
1166611798inline Result Client::Put (const std::string &path) { return cli_->Put (path); }
0 commit comments