Only allow session-level setting for ssl_verify and buffer_size.

master
Chunting Gu 6 years ago
parent 6c5dedb807
commit ee56fe9d1b

@ -21,8 +21,7 @@ void ExampleBasic() {
.url("http://httpbin.org/get")
.parameter("key1", "value1")
.parameter("key2", "value2")
.header("Accept", "application/json")
.buffer(1000)());
.header("Accept", "application/json")());
std::cout << r->content() << std::endl;
}

@ -12,6 +12,7 @@ namespace webcc {
HttpClient::HttpClient()
: timer_(io_context_),
ssl_verify_(true),
buffer_size_(kBufferSize),
timeout_(kMaxReadSeconds),
closed_(false),
timer_canceled_(false),
@ -30,14 +31,9 @@ bool HttpClient::Request(HttpRequestPtr request, bool connect) {
timed_out_ = false;
error_ = kNoError;
std::size_t buffer_size = request->buffer_size();
if (buffer_size == 0) {
buffer_size = kBufferSize;
}
if (buffer_.size() != buffer_size) {
LOG_VERB("Resize buffer: %u -> %u.", buffer_.size(), buffer_size);
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) {

@ -38,6 +38,12 @@ public:
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.
void set_timeout(int timeout) {
if (timeout > 0) {
@ -94,6 +100,10 @@ private:
// Verify the certificate of the peer or not (for HTTPS).
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.
int timeout_;

@ -139,10 +139,6 @@ void HttpClientSession::InitHeaders() {
}
HttpResponsePtr HttpClientSession::Send(HttpRequestPtr request) {
if (request->buffer_size() == 0) {
request->set_buffer_size(buffer_size_);
}
const HttpClientPool::Key key{request->url()};
// Reuse a pooled connection.
@ -158,6 +154,7 @@ HttpResponsePtr HttpClientSession::Send(HttpRequestPtr request) {
}
client->set_ssl_verify(ssl_verify_);
client->set_buffer_size(buffer_size_);
client->set_timeout(timeout_);
bool ok = client->Request(request, !reuse);

@ -36,14 +36,6 @@ public:
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 {
return method_;
}
@ -64,16 +56,6 @@ public:
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.
// Compose start line, set Host header, etc.
bool Prepare() final;
@ -81,13 +63,6 @@ public:
private:
std::string method_;
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

@ -44,8 +44,6 @@ HttpRequestPtr HttpRequestBuilder::operator()() {
}
}
request->set_buffer_size(buffer_);
return request;
}

@ -68,11 +68,6 @@ public:
return *this;
}
HttpRequestBuilder& buffer(std::size_t buffer) {
buffer_ = buffer;
return *this;
}
HttpRequestBuilder& keep_alive(bool keep_alive) {
keep_alive_ = keep_alive;
return *this;
@ -101,10 +96,6 @@ private:
// Additional request 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.
bool keep_alive_ = true;
};

@ -61,10 +61,10 @@ bool SoapClient::Request(const std::string& operation,
http_request->SetHeader(kSoapAction, operation);
http_request->set_buffer_size(buffer_size);
http_request->Prepare();
http_client_.set_buffer_size(buffer_size);
if (!http_client_.Request(http_request, true)) {
error_ = http_client_.error();
return false;

Loading…
Cancel
Save