Add http request timeout number for ApiClient

This commit is contained in:
samuelbles07
2024-09-11 15:48:44 +07:00
parent 9ec74450a5
commit 59587ce2b7
2 changed files with 22 additions and 7 deletions

View File

@ -2,13 +2,6 @@
#include "AgConfigure.h"
#include "AirGradient.h"
#include "Libraries/Arduino_JSON/src/Arduino_JSON.h"
#ifdef ESP8266
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#else
#include <HTTPClient.h>
#endif
AgApiClient::AgApiClient(Stream &debug, Configuration &config)
: PrintLog(debug, "ApiClient"), config(config) {}
@ -58,6 +51,7 @@ bool AgApiClient::fetchServerConfiguration(void) {
}
#else
HTTPClient client;
_setHttpClientTimeout(&client);
if (client.begin(uri) == false) {
getConfigFailed = true;
return false;
@ -121,6 +115,7 @@ bool AgApiClient::postToServer(String data) {
WiFiClient wifiClient;
HTTPClient client;
_setHttpClientTimeout(&client);
if (client.begin(wifiClient, uri.c_str()) == false) {
logError("Init client failed");
return false;
@ -190,3 +185,12 @@ bool AgApiClient::sendPing(int rssi, int bootCount) {
String AgApiClient::getApiRoot() const { return apiRoot; }
void AgApiClient::setApiRoot(const String &apiRoot) { this->apiRoot = apiRoot; }
/**
* @brief Set timeout to both connect to server and tcp connection timeout
*
*/
void AgApiClient::_setHttpClientTimeout(HTTPClient *httpClient) {
httpClient->setTimeout(timeoutMs);
httpClient->setConnectTimeout(timeoutMs);
}

View File

@ -16,6 +16,14 @@
#include "Main/PrintLog.h"
#include <Arduino.h>
#ifdef ESP8266
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#else
#include <HTTPClient.h>
#endif
class AgApiClient : public PrintLog {
private:
Configuration &config;
@ -25,6 +33,9 @@ private:
bool getConfigFailed;
bool postToServerFailed;
bool notAvailableOnDashboard = false; // Device not setup on Airgradient cloud dashboard.
uint16_t timeoutMs = 10000; // Default set to 10s
void _setHttpClientTimeout(HTTPClient *httpClient);
public:
AgApiClient(Stream &stream, Configuration &config);