@@ -639,7 +639,7 @@ class Server {
639
639
Headers headers = Headers());
640
640
bool remove_mount_point (const char *mount_point);
641
641
Server &set_file_extension_and_mimetype_mapping (const char *ext,
642
- const char *mime);
642
+ const char *mime);
643
643
Server &set_file_request_handler (Handler handler);
644
644
645
645
Server &set_error_handler (HandlerWithReturn handler);
@@ -835,6 +835,14 @@ class ClientImpl {
835
835
ResponseHandler response_handler, ContentReceiver content_receiver,
836
836
Progress progress);
837
837
838
+ Result Get (const char *path, const Params ¶ms, const Headers &headers,
839
+ Progress progress = nullptr );
840
+ Result Get (const char *path, const Params ¶ms, const Headers &headers,
841
+ ContentReceiver content_receiver, Progress progress = nullptr );
842
+ Result Get (const char *path, const Params ¶ms, const Headers &headers,
843
+ ResponseHandler response_handler, ContentReceiver content_receiver,
844
+ Progress progress = nullptr );
845
+
838
846
Result Head (const char *path);
839
847
Result Head (const char *path, const Headers &headers);
840
848
@@ -1128,6 +1136,14 @@ class Client {
1128
1136
Result Get (const char *path, ResponseHandler response_handler,
1129
1137
ContentReceiver content_receiver, Progress progress);
1130
1138
1139
+ Result Get (const char *path, const Params ¶ms, const Headers &headers,
1140
+ Progress progress = nullptr );
1141
+ Result Get (const char *path, const Params ¶ms, const Headers &headers,
1142
+ ContentReceiver content_receiver, Progress progress = nullptr );
1143
+ Result Get (const char *path, const Params ¶ms, const Headers &headers,
1144
+ ResponseHandler response_handler, ContentReceiver content_receiver,
1145
+ Progress progress = nullptr );
1146
+
1131
1147
Result Head (const char *path);
1132
1148
Result Head (const char *path, const Headers &headers);
1133
1149
@@ -3125,6 +3141,14 @@ inline std::string params_to_query_str(const Params ¶ms) {
3125
3141
return query;
3126
3142
}
3127
3143
3144
+ inline std::string append_query_params (const char *path, const Params ¶ms) {
3145
+ std::string path_with_query = path;
3146
+ const static std::regex re (" [^?]+\\ ?.*" );
3147
+ auto delm = std::regex_match (path, re) ? ' &' : ' ?' ;
3148
+ path_with_query += delm + params_to_query_str (params);
3149
+ return path_with_query;
3150
+ }
3151
+
3128
3152
inline void parse_query_text (const std::string &s, Params ¶ms) {
3129
3153
split (s.data (), s.data () + s.size (), ' &' , [&](const char *b, const char *e) {
3130
3154
std::string key;
@@ -4222,8 +4246,9 @@ inline bool Server::remove_mount_point(const char *mount_point) {
4222
4246
return false ;
4223
4247
}
4224
4248
4225
- inline Server &Server::set_file_extension_and_mimetype_mapping (const char *ext,
4226
- const char *mime) {
4249
+ inline Server &
4250
+ Server::set_file_extension_and_mimetype_mapping (const char *ext,
4251
+ const char *mime) {
4227
4252
file_extension_and_mimetype_map_[ext] = mime;
4228
4253
4229
4254
return *this ;
@@ -4264,8 +4289,8 @@ inline Server &Server::set_logger(Logger logger) {
4264
4289
return *this ;
4265
4290
}
4266
4291
4267
- inline Server
4268
- & Server::set_expect_100_continue_handler (Expect100ContinueHandler handler) {
4292
+ inline Server &
4293
+ Server::set_expect_100_continue_handler (Expect100ContinueHandler handler) {
4269
4294
expect_100_continue_handler_ = std::move (handler);
4270
4295
4271
4296
return *this ;
@@ -5796,6 +5821,35 @@ inline Result ClientImpl::Get(const char *path, const Headers &headers,
5796
5821
return send (req);
5797
5822
}
5798
5823
5824
+ inline Result ClientImpl::Get (const char *path, const Params ¶ms,
5825
+ const Headers &headers, Progress progress) {
5826
+ if (params.empty ()) { return Get (path, headers); }
5827
+
5828
+ std::string path_with_query = detail::append_query_params (path, params);
5829
+ return Get (path_with_query.c_str (), headers, progress);
5830
+ }
5831
+
5832
+ inline Result ClientImpl::Get (const char *path, const Params ¶ms,
5833
+ const Headers &headers,
5834
+ ContentReceiver content_receiver,
5835
+ Progress progress) {
5836
+ return Get (path, params, headers, nullptr , content_receiver, progress);
5837
+ }
5838
+
5839
+ inline Result ClientImpl::Get (const char *path, const Params ¶ms,
5840
+ const Headers &headers,
5841
+ ResponseHandler response_handler,
5842
+ ContentReceiver content_receiver,
5843
+ Progress progress) {
5844
+ if (params.empty ()) {
5845
+ return Get (path, headers, response_handler, content_receiver, progress);
5846
+ }
5847
+
5848
+ std::string path_with_query = detail::append_query_params (path, params);
5849
+ return Get (path_with_query.c_str (), params, headers, response_handler,
5850
+ content_receiver, progress);
5851
+ }
5852
+
5799
5853
inline Result ClientImpl::Head (const char *path) {
5800
5854
return Head (path, Headers ());
5801
5855
}
@@ -7020,6 +7074,22 @@ inline Result Client::Get(const char *path, const Headers &headers,
7020
7074
return cli_->Get (path, headers, std::move (response_handler),
7021
7075
std::move (content_receiver), std::move (progress));
7022
7076
}
7077
+ inline Result Client::Get (const char *path, const Params ¶ms,
7078
+ const Headers &headers, Progress progress) {
7079
+ return cli_->Get (path, params, headers, progress);
7080
+ }
7081
+ inline Result Client::Get (const char *path, const Params ¶ms,
7082
+ const Headers &headers,
7083
+ ContentReceiver content_receiver, Progress progress) {
7084
+ return cli_->Get (path, params, headers, content_receiver, progress);
7085
+ }
7086
+ inline Result Client::Get (const char *path, const Params ¶ms,
7087
+ const Headers &headers,
7088
+ ResponseHandler response_handler,
7089
+ ContentReceiver content_receiver, Progress progress) {
7090
+ return cli_->Get (path, params, headers, response_handler, content_receiver,
7091
+ progress);
7092
+ }
7023
7093
7024
7094
inline Result Client::Head (const char *path) { return cli_->Head (path); }
7025
7095
inline Result Client::Head (const char *path, const Headers &headers) {
0 commit comments