Fix URL encoding issues; remove request shortcuts.

This commit is contained in:
Chunting Gu
2019-08-23 14:51:41 +08:00
parent 9b31ac855a
commit 1a21989b2e
16 changed files with 372 additions and 365 deletions
-98
View File
@@ -47,104 +47,6 @@ ResponsePtr ClientSession::Request(RequestPtr request, bool stream) {
return Send(request, stream);
}
static void SetHeaders(const Strings& headers, RequestBuilder* builder) {
assert(headers.size() % 2 == 0);
for (std::size_t i = 1; i < headers.size(); i += 2) {
builder->Header(headers[i - 1], headers[i]);
}
}
ResponsePtr ClientSession::Get(const std::string& url,
const Strings& parameters,
const Strings& headers) {
RequestBuilder builder;
builder.Get(url);
assert(parameters.size() % 2 == 0);
for (std::size_t i = 1; i < parameters.size(); i += 2) {
builder.Query(parameters[i - 1], parameters[i]);
}
SetHeaders(headers, &builder);
return Request(builder());
}
ResponsePtr ClientSession::Head(const std::string& url,
const Strings& parameters,
const Strings& headers) {
RequestBuilder builder;
builder.Head(url);
assert(parameters.size() % 2 == 0);
for (std::size_t i = 1; i < parameters.size(); i += 2) {
builder.Query(parameters[i - 1], parameters[i]);
}
SetHeaders(headers, &builder);
return Request(builder());
}
ResponsePtr ClientSession::Post(const std::string& url, std::string&& data,
bool json, const Strings& headers) {
RequestBuilder builder;
builder.Post(url);
SetHeaders(headers, &builder);
builder.Body(std::move(data));
if (json) {
builder.Json();
}
return Request(builder());
}
ResponsePtr ClientSession::Put(const std::string& url, std::string&& data,
bool json, const Strings& headers) {
RequestBuilder builder;
builder.Put(url);
SetHeaders(headers, &builder);
builder.Body(std::move(data));
if (json) {
builder.Json();
}
return Request(builder());
}
ResponsePtr ClientSession::Delete(const std::string& url,
const Strings& headers) {
RequestBuilder builder;
builder.Delete(url);
SetHeaders(headers, &builder);
return Request(builder());
}
ResponsePtr ClientSession::Patch(const std::string& url, std::string&& data,
bool json, const Strings& headers) {
RequestBuilder builder;
builder.Patch(url);
SetHeaders(headers, &builder);
builder.Body(std::move(data));
if (json) {
builder.Json();
}
return Request(builder());
}
void ClientSession::InitHeaders() {
using namespace headers;