(ws curl) Add support for --data-binary option, to set the request body. When present the request will be sent with the POST verb

This commit is contained in:
Benjamin Sergeant 2020-10-12 14:03:01 -07:00
parent 67cb48537a
commit b2f21840c6
4 changed files with 19 additions and 3 deletions

View File

@ -2,6 +2,10 @@
All changes to this project will be documented in this file. All changes to this project will be documented in this file.
## [10.5.2] - 2020-10-12
(ws curl) Add support for --data-binary option, to set the request body. When present the request will be sent with the POST verb
## [10.5.1] - 2020-10-09 ## [10.5.1] - 2020-10-09
(http client + server + ws) Add support for compressing http client requests with gzip. --compress_request argument is used in ws to enable this. The Content-Encoding is set to gzip, and decoded on the server side if present. (http client + server + ws) Add support for compressing http client requests with gzip. --compress_request argument is used in ws to enable this. The Content-Encoding is set to gzip, and decoded on the server side if present.

View File

@ -588,7 +588,6 @@ namespace ix
return request(url, verb, body, args); return request(url, verb, body, args);
} }
HttpResponsePtr HttpClient::post(const std::string& url, HttpResponsePtr HttpClient::post(const std::string& url,
const HttpParameters& httpParameters, const HttpParameters& httpParameters,
const HttpFormDataParameters& httpFormDataParameters, const HttpFormDataParameters& httpFormDataParameters,

View File

@ -6,4 +6,4 @@
#pragma once #pragma once
#define IX_WEBSOCKET_VERSION "10.5.1" #define IX_WEBSOCKET_VERSION "10.5.2"

View File

@ -1531,6 +1531,7 @@ namespace ix
const std::string& headersData, const std::string& headersData,
const std::string& data, const std::string& data,
const std::string& formData, const std::string& formData,
const std::string& dataBinary,
bool headersOnly, bool headersOnly,
int connectTimeout, int connectTimeout,
int transferTimeout, int transferTimeout,
@ -1572,10 +1573,19 @@ namespace ix
{ {
response = httpClient.head(url, args); response = httpClient.head(url, args);
} }
else if (data.empty() && formData.empty()) else if (data.empty() && formData.empty() && dataBinary.empty())
{ {
response = httpClient.get(url, args); response = httpClient.get(url, args);
} }
else if (!dataBinary.empty())
{
std::string body = dataBinary;
if (compressRequest)
{
body = gzipCompress(dataBinary);
}
response = httpClient.request(url, "POST", body, args, 0);
}
else else
{ {
response = httpClient.post(url, httpParameters, httpFormDataParameters, args); response = httpClient.post(url, httpParameters, httpFormDataParameters, args);
@ -2981,6 +2991,7 @@ int main(int argc, char** argv)
std::string user; std::string user;
std::string data; std::string data;
std::string formData; std::string formData;
std::string binaryData;
std::string headers; std::string headers;
std::string output; std::string output;
std::string hostname("127.0.0.1"); std::string hostname("127.0.0.1");
@ -3193,6 +3204,7 @@ int main(int argc, char** argv)
httpClientApp->add_option("url", url, "Connection url")->required(); httpClientApp->add_option("url", url, "Connection url")->required();
httpClientApp->add_option("-d", data, "Form data")->join(); httpClientApp->add_option("-d", data, "Form data")->join();
httpClientApp->add_option("-F", formData, "Form data")->join(); httpClientApp->add_option("-F", formData, "Form data")->join();
httpClientApp->add_option("--data-binary", binaryData, "Body binary data")->join();
httpClientApp->add_option("-H", headers, "Header")->join(); httpClientApp->add_option("-H", headers, "Header")->join();
httpClientApp->add_option("--output", output, "Output file"); httpClientApp->add_option("--output", output, "Output file");
httpClientApp->add_flag("-I", headersOnly, "Send a HEAD request"); httpClientApp->add_flag("-I", headersOnly, "Send a HEAD request");
@ -3518,6 +3530,7 @@ int main(int argc, char** argv)
headers, headers,
data, data,
formData, formData,
binaryData,
headersOnly, headersOnly,
connectTimeOut, connectTimeOut,
transferTimeout, transferTimeout,