Only allow session-level setting for ssl_verify and buffer_size.
This commit is contained in:
@@ -21,8 +21,7 @@ void ExampleBasic() {
|
|||||||
.url("http://httpbin.org/get")
|
.url("http://httpbin.org/get")
|
||||||
.parameter("key1", "value1")
|
.parameter("key1", "value1")
|
||||||
.parameter("key2", "value2")
|
.parameter("key2", "value2")
|
||||||
.header("Accept", "application/json")
|
.header("Accept", "application/json")());
|
||||||
.buffer(1000)());
|
|
||||||
|
|
||||||
std::cout << r->content() << std::endl;
|
std::cout << r->content() << std::endl;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace webcc {
|
|||||||
HttpClient::HttpClient()
|
HttpClient::HttpClient()
|
||||||
: timer_(io_context_),
|
: timer_(io_context_),
|
||||||
ssl_verify_(true),
|
ssl_verify_(true),
|
||||||
|
buffer_size_(kBufferSize),
|
||||||
timeout_(kMaxReadSeconds),
|
timeout_(kMaxReadSeconds),
|
||||||
closed_(false),
|
closed_(false),
|
||||||
timer_canceled_(false),
|
timer_canceled_(false),
|
||||||
@@ -30,14 +31,9 @@ bool HttpClient::Request(HttpRequestPtr request, bool connect) {
|
|||||||
timed_out_ = false;
|
timed_out_ = false;
|
||||||
error_ = kNoError;
|
error_ = kNoError;
|
||||||
|
|
||||||
std::size_t buffer_size = request->buffer_size();
|
if (buffer_.size() != buffer_size_) {
|
||||||
if (buffer_size == 0) {
|
LOG_VERB("Resize buffer: %u -> %u.", buffer_.size(), buffer_size_);
|
||||||
buffer_size = kBufferSize;
|
buffer_.resize(buffer_size_);
|
||||||
}
|
|
||||||
|
|
||||||
if (buffer_.size() != buffer_size) {
|
|
||||||
LOG_VERB("Resize buffer: %u -> %u.", buffer_.size(), buffer_size);
|
|
||||||
buffer_.resize(buffer_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (connect) {
|
if (connect) {
|
||||||
|
|||||||
@@ -38,6 +38,12 @@ public:
|
|||||||
ssl_verify_ = ssl_verify;
|
ssl_verify_ = ssl_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_buffer_size(std::size_t buffer_size) {
|
||||||
|
if (buffer_size > 0) {
|
||||||
|
buffer_size_ = buffer_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Set the timeout (in seconds) for reading response.
|
// Set the timeout (in seconds) for reading response.
|
||||||
void set_timeout(int timeout) {
|
void set_timeout(int timeout) {
|
||||||
if (timeout > 0) {
|
if (timeout > 0) {
|
||||||
@@ -94,6 +100,10 @@ private:
|
|||||||
// Verify the certificate of the peer or not (for HTTPS).
|
// Verify the certificate of the peer or not (for HTTPS).
|
||||||
bool ssl_verify_;
|
bool ssl_verify_;
|
||||||
|
|
||||||
|
// The size of the buffer for reading response.
|
||||||
|
// 0 means default value will be used.
|
||||||
|
std::size_t buffer_size_;
|
||||||
|
|
||||||
// Timeout (seconds) for receiving response.
|
// Timeout (seconds) for receiving response.
|
||||||
int timeout_;
|
int timeout_;
|
||||||
|
|
||||||
|
|||||||
@@ -139,10 +139,6 @@ void HttpClientSession::InitHeaders() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HttpResponsePtr HttpClientSession::Send(HttpRequestPtr request) {
|
HttpResponsePtr HttpClientSession::Send(HttpRequestPtr request) {
|
||||||
if (request->buffer_size() == 0) {
|
|
||||||
request->set_buffer_size(buffer_size_);
|
|
||||||
}
|
|
||||||
|
|
||||||
const HttpClientPool::Key key{request->url()};
|
const HttpClientPool::Key key{request->url()};
|
||||||
|
|
||||||
// Reuse a pooled connection.
|
// Reuse a pooled connection.
|
||||||
@@ -158,6 +154,7 @@ HttpResponsePtr HttpClientSession::Send(HttpRequestPtr request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
client->set_ssl_verify(ssl_verify_);
|
client->set_ssl_verify(ssl_verify_);
|
||||||
|
client->set_buffer_size(buffer_size_);
|
||||||
client->set_timeout(timeout_);
|
client->set_timeout(timeout_);
|
||||||
|
|
||||||
bool ok = client->Request(request, !reuse);
|
bool ok = client->Request(request, !reuse);
|
||||||
|
|||||||
@@ -36,14 +36,6 @@ public:
|
|||||||
url_.AddParameter(key, value);
|
url_.AddParameter(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_buffer_size(std::size_t buffer_size) {
|
|
||||||
buffer_size_ = buffer_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_ssl_verify(bool ssl_verify) {
|
|
||||||
ssl_verify_ = ssl_verify;
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::string& method() const {
|
const std::string& method() const {
|
||||||
return method_;
|
return method_;
|
||||||
}
|
}
|
||||||
@@ -64,16 +56,6 @@ public:
|
|||||||
return port().empty() ? default_port : port();
|
return port().empty() ? default_port : port();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Remove
|
|
||||||
std::size_t buffer_size() const {
|
|
||||||
return buffer_size_;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Remove
|
|
||||||
bool ssl_verify() const {
|
|
||||||
return ssl_verify_;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prepare payload.
|
// Prepare payload.
|
||||||
// Compose start line, set Host header, etc.
|
// Compose start line, set Host header, etc.
|
||||||
bool Prepare() final;
|
bool Prepare() final;
|
||||||
@@ -81,13 +63,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
std::string method_;
|
std::string method_;
|
||||||
Url url_;
|
Url url_;
|
||||||
|
|
||||||
// Verify the certificate of the peer or not (for HTTPS).
|
|
||||||
bool ssl_verify_ = true;
|
|
||||||
|
|
||||||
// The size of the buffer for reading response.
|
|
||||||
// 0 means default value will be used.
|
|
||||||
std::size_t buffer_size_ = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace webcc
|
} // namespace webcc
|
||||||
|
|||||||
@@ -44,8 +44,6 @@ HttpRequestPtr HttpRequestBuilder::operator()() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
request->set_buffer_size(buffer_);
|
|
||||||
|
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,11 +68,6 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpRequestBuilder& buffer(std::size_t buffer) {
|
|
||||||
buffer_ = buffer;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
HttpRequestBuilder& keep_alive(bool keep_alive) {
|
HttpRequestBuilder& keep_alive(bool keep_alive) {
|
||||||
keep_alive_ = keep_alive;
|
keep_alive_ = keep_alive;
|
||||||
return *this;
|
return *this;
|
||||||
@@ -101,10 +96,6 @@ private:
|
|||||||
// Additional request headers.
|
// Additional request headers.
|
||||||
std::vector<std::string> headers_;
|
std::vector<std::string> headers_;
|
||||||
|
|
||||||
// Size of the buffer to read response.
|
|
||||||
// Leave it to 0 for using default value.
|
|
||||||
std::size_t buffer_ = 0;
|
|
||||||
|
|
||||||
// Persistent connection.
|
// Persistent connection.
|
||||||
bool keep_alive_ = true;
|
bool keep_alive_ = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -61,10 +61,10 @@ bool SoapClient::Request(const std::string& operation,
|
|||||||
|
|
||||||
http_request->SetHeader(kSoapAction, operation);
|
http_request->SetHeader(kSoapAction, operation);
|
||||||
|
|
||||||
http_request->set_buffer_size(buffer_size);
|
|
||||||
|
|
||||||
http_request->Prepare();
|
http_request->Prepare();
|
||||||
|
|
||||||
|
http_client_.set_buffer_size(buffer_size);
|
||||||
|
|
||||||
if (!http_client_.Request(http_request, true)) {
|
if (!http_client_.Request(http_request, true)) {
|
||||||
error_ = http_client_.error();
|
error_ = http_client_.error();
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user