mirror of
https://github.com/airgradienthq/arduino.git
synced 2025-07-20 20:22:08 +02:00
Add http request timeout number for ApiClient
This commit is contained in:
@ -2,13 +2,6 @@
|
|||||||
#include "AgConfigure.h"
|
#include "AgConfigure.h"
|
||||||
#include "AirGradient.h"
|
#include "AirGradient.h"
|
||||||
#include "Libraries/Arduino_JSON/src/Arduino_JSON.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)
|
AgApiClient::AgApiClient(Stream &debug, Configuration &config)
|
||||||
: PrintLog(debug, "ApiClient"), config(config) {}
|
: PrintLog(debug, "ApiClient"), config(config) {}
|
||||||
@ -58,6 +51,7 @@ bool AgApiClient::fetchServerConfiguration(void) {
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
HTTPClient client;
|
HTTPClient client;
|
||||||
|
_setHttpClientTimeout(&client);
|
||||||
if (client.begin(uri) == false) {
|
if (client.begin(uri) == false) {
|
||||||
getConfigFailed = true;
|
getConfigFailed = true;
|
||||||
return false;
|
return false;
|
||||||
@ -121,6 +115,7 @@ bool AgApiClient::postToServer(String data) {
|
|||||||
|
|
||||||
WiFiClient wifiClient;
|
WiFiClient wifiClient;
|
||||||
HTTPClient client;
|
HTTPClient client;
|
||||||
|
_setHttpClientTimeout(&client);
|
||||||
if (client.begin(wifiClient, uri.c_str()) == false) {
|
if (client.begin(wifiClient, uri.c_str()) == false) {
|
||||||
logError("Init client failed");
|
logError("Init client failed");
|
||||||
return false;
|
return false;
|
||||||
@ -190,3 +185,12 @@ bool AgApiClient::sendPing(int rssi, int bootCount) {
|
|||||||
String AgApiClient::getApiRoot() const { return apiRoot; }
|
String AgApiClient::getApiRoot() const { return apiRoot; }
|
||||||
|
|
||||||
void AgApiClient::setApiRoot(const String &apiRoot) { this->apiRoot = 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);
|
||||||
|
}
|
@ -16,6 +16,14 @@
|
|||||||
#include "Main/PrintLog.h"
|
#include "Main/PrintLog.h"
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#ifdef ESP8266
|
||||||
|
#include <ESP8266HTTPClient.h>
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#include <WiFiClient.h>
|
||||||
|
#else
|
||||||
|
#include <HTTPClient.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
class AgApiClient : public PrintLog {
|
class AgApiClient : public PrintLog {
|
||||||
private:
|
private:
|
||||||
Configuration &config;
|
Configuration &config;
|
||||||
@ -25,6 +33,9 @@ private:
|
|||||||
bool getConfigFailed;
|
bool getConfigFailed;
|
||||||
bool postToServerFailed;
|
bool postToServerFailed;
|
||||||
bool notAvailableOnDashboard = false; // Device not setup on Airgradient cloud dashboard.
|
bool notAvailableOnDashboard = false; // Device not setup on Airgradient cloud dashboard.
|
||||||
|
uint16_t timeoutMs = 10000; // Default set to 10s
|
||||||
|
|
||||||
|
void _setHttpClientTimeout(HTTPClient *httpClient);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AgApiClient(Stream &stream, Configuration &config);
|
AgApiClient(Stream &stream, Configuration &config);
|
||||||
|
Reference in New Issue
Block a user