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") .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;

Loading…
Cancel
Save