Remove unique_ptr wrapper

This commit is contained in:
Jesse Hills 2022-03-10 09:19:28 +13:00
parent 1c44538fc9
commit 7c7b508620
No known key found for this signature in database
GPG Key ID: BEAAE804EFD8E83A
5 changed files with 16 additions and 16 deletions

View File

@ -26,7 +26,7 @@ struct HttpResponse {
class HttpRequestResponseTrigger : public Trigger<int, HttpResponse> {
public:
void process(std::unique_ptr<HttpResponse> &response) { this->trigger(response->status_code, *response); }
void process(HttpResponse response) { this->trigger(response->status_code, response); }
};
class HttpRequestComponent : public Component {
@ -47,7 +47,7 @@ class HttpRequestComponent : public Component {
bool get_capture_response() { return this->capture_response_; }
virtual void set_url(std::string url) = 0;
virtual std::unique_ptr<HttpResponse> send() = 0;
virtual HttpResponse send() = 0;
protected:
std::string url_;
@ -112,7 +112,7 @@ template<typename... Ts> class HttpRequestSendAction : public Action<Ts...> {
}
this->parent_->set_headers(headers);
}
std::unique_ptr<HttpResponse> response = this->parent_->send();
HttpResponse response = this->parent_->send();
for (auto *trigger : this->response_triggers_)
trigger->process(response);

View File

@ -23,7 +23,7 @@ void HttpRequestArduino::set_url(std::string url) {
this->client_.setReuse(true);
}
std::unique_ptr<HttpResponse> HttpRequestArduino::send() {
HttpResponse HttpRequestArduino::send() {
if (!network::is_connected()) {
this->client_.end();
this->status_set_warning();
@ -68,10 +68,10 @@ std::unique_ptr<HttpResponse> HttpRequestArduino::send() {
int http_code = this->client_.sendRequest(this->method_.c_str(), this->body_.c_str());
std::unique_ptr<HttpResponse> response = make_unique<HttpResponse>();
HttpResponse response = {};
response->status_code = http_code;
response->content_length = this->client_.getSize();
response.status_code = http_code;
response.content_length = this->client_.getSize();
if (http_code < 0) {
ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s", this->url_.c_str(),
@ -86,7 +86,7 @@ std::unique_ptr<HttpResponse> HttpRequestArduino::send() {
auto &
#endif
str = this->client_.getString();
response->data = std::vector<char>(str.c_str(), str.c_str() + str.length());
response.data = std::vector<char>(str.c_str(), str.c_str() + str.length());
}
if (http_code < 200 || http_code >= 300) {

View File

@ -20,7 +20,7 @@ namespace http_request {
class HttpRequestArduino : public HttpRequestComponent {
public:
void set_url(std::string url) override;
std::unique_ptr<HttpResponse> send() override;
HttpResponse send() override;
protected:
std::string last_url_;

View File

@ -56,11 +56,11 @@ esp_err_t http_event_handler(esp_http_client_event_t *evt) {
void HttpRequestIDF::set_url(std::string url) { this->url_ = std::move(url); }
std::unique_ptr<HttpResponse> HttpRequestIDF::send() {
HttpResponse HttpRequestIDF::send() {
if (!network::is_connected()) {
this->status_set_warning();
ESP_LOGE(TAG, "HTTP Request failed; Not connected to network");
return nullptr;
return {};
}
esp_http_client_method_t method;
@ -77,7 +77,7 @@ std::unique_ptr<HttpResponse> HttpRequestIDF::send() {
} else {
this->status_set_warning();
ESP_LOGE(TAG, "HTTP Request failed; Unsupported method");
return nullptr;
return {};
}
HttpResponse response = {}; // used as user_data, by http_event_handler, in esp_http_client_perform
@ -111,7 +111,7 @@ std::unique_ptr<HttpResponse> HttpRequestIDF::send() {
this->status_set_warning();
ESP_LOGE(TAG, "HTTP Request failed: %s", esp_err_to_name(err));
esp_http_client_cleanup(client);
return nullptr;
return {};
}
const auto status_code = esp_http_client_get_status_code(client);
@ -121,7 +121,7 @@ std::unique_ptr<HttpResponse> HttpRequestIDF::send() {
if (status_code < 200 || status_code >= 300) {
ESP_LOGE(TAG, "HTTP Request failed; URL: %s; Code: %d", this->url_.c_str(), status_code);
this->status_set_warning();
return make_unique<HttpResponse>(std::move(response));
return response;
}
this->status_clear_warning();
@ -129,7 +129,7 @@ std::unique_ptr<HttpResponse> HttpRequestIDF::send() {
esp_http_client_cleanup(client);
return make_unique<HttpResponse>(std::move(response));
return response;
}
} // namespace http_request

View File

@ -17,7 +17,7 @@ static const size_t RESPONSE_BUFFER_SIZE = 2048;
class HttpRequestIDF : public HttpRequestComponent {
public:
void set_url(std::string url) override;
std::unique_ptr<HttpResponse> send() override;
HttpResponse send() override;
protected:
char last_response_buffer_[RESPONSE_BUFFER_SIZE];