diff --git a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp index d3029c453e..c2c2e8d631 100644 --- a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp +++ b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp @@ -45,7 +45,7 @@ ESP8266HTTPUpdate::~ESP8266HTTPUpdate(void) #ifdef HTTPUPDATE_1_2_COMPATIBLE HTTPUpdateResult ESP8266HTTPUpdate::update(const String& url, const String& currentVersion, - const String& httpsFingerprint, bool reboot) + const String& httpsFingerprint, bool reboot, const char * apiKey) { rebootOnUpdate(reboot); #pragma GCC diagnostic push @@ -54,88 +54,88 @@ HTTPUpdateResult ESP8266HTTPUpdate::update(const String& url, const String& curr #pragma GCC diagnostic pop } -HTTPUpdateResult ESP8266HTTPUpdate::update(const String& url, const String& currentVersion) +HTTPUpdateResult ESP8266HTTPUpdate::update(const String& url, const String& currentVersion, const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(url); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, false); + return handleUpdate(http, currentVersion, false, apiKey); } HTTPUpdateResult ESP8266HTTPUpdate::update(const String& url, const String& currentVersion, - const String& httpsFingerprint) + const String& httpsFingerprint, const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(url, httpsFingerprint); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, false); + return handleUpdate(http, currentVersion, false, apiKey); } HTTPUpdateResult ESP8266HTTPUpdate::update(const String& url, const String& currentVersion, - const uint8_t httpsFingerprint[20]) + const uint8_t httpsFingerprint[20], const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(url, httpsFingerprint); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, false); + return handleUpdate(http, currentVersion, false, apiKey); } #endif -HTTPUpdateResult ESP8266HTTPUpdate::update(WiFiClient& client, const String& url, const String& currentVersion) +HTTPUpdateResult ESP8266HTTPUpdate::update(WiFiClient& client, const String& url, const String& currentVersion, const char * apiKey) { HTTPClient http; http.begin(client, url); - return handleUpdate(http, currentVersion, false); + return handleUpdate(http, currentVersion, false, apiKey); } #ifdef HTTPUPDATE_1_2_COMPATIBLE -HTTPUpdateResult ESP8266HTTPUpdate::updateSpiffs(const String& url, const String& currentVersion, const String& httpsFingerprint) +HTTPUpdateResult ESP8266HTTPUpdate::updateSpiffs(const String& url, const String& currentVersion, const String& httpsFingerprint, const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(url, httpsFingerprint); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, true); + return handleUpdate(http, currentVersion, true, apiKey); } -HTTPUpdateResult ESP8266HTTPUpdate::updateSpiffs(const String& url, const String& currentVersion, const uint8_t httpsFingerprint[20]) +HTTPUpdateResult ESP8266HTTPUpdate::updateSpiffs(const String& url, const String& currentVersion, const uint8_t httpsFingerprint[20], const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(url, httpsFingerprint); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, true); + return handleUpdate(http, currentVersion, true, apiKey); } -HTTPUpdateResult ESP8266HTTPUpdate::updateSpiffs(const String& url, const String& currentVersion) +HTTPUpdateResult ESP8266HTTPUpdate::updateSpiffs(const String& url, const String& currentVersion, const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(url); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, true); + return handleUpdate(http, currentVersion, true, apiKey); } #endif -HTTPUpdateResult ESP8266HTTPUpdate::updateSpiffs(WiFiClient& client, const String& url, const String& currentVersion) +HTTPUpdateResult ESP8266HTTPUpdate::updateSpiffs(WiFiClient& client, const String& url, const String& currentVersion, const char * apiKey) { HTTPClient http; http.begin(client, url); - return handleUpdate(http, currentVersion, true); + return handleUpdate(http, currentVersion, true, apiKey); } #ifdef HTTPUPDATE_1_2_COMPATIBLE HTTPUpdateResult ESP8266HTTPUpdate::update(const String& host, uint16_t port, const String& uri, const String& currentVersion, - bool https, const String& httpsFingerprint, bool reboot) + bool https, const String& httpsFingerprint, bool reboot, const char * apiKey) { (void)https; rebootOnUpdate(reboot); @@ -150,45 +150,45 @@ HTTPUpdateResult ESP8266HTTPUpdate::update(const String& host, uint16_t port, co } HTTPUpdateResult ESP8266HTTPUpdate::update(const String& host, uint16_t port, const String& uri, - const String& currentVersion) + const String& currentVersion, const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(host, port, uri); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, false); + return handleUpdate(http, currentVersion, false, apiKey); } HTTPUpdateResult ESP8266HTTPUpdate::update(const String& host, uint16_t port, const String& url, - const String& currentVersion, const String& httpsFingerprint) + const String& currentVersion, const String& httpsFingerprint, const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(host, port, url, httpsFingerprint); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, false); + return handleUpdate(http, currentVersion, false, apiKey); } HTTPUpdateResult ESP8266HTTPUpdate::update(const String& host, uint16_t port, const String& url, - const String& currentVersion, const uint8_t httpsFingerprint[20]) + const String& currentVersion, const uint8_t httpsFingerprint[20], const char * apiKey) { HTTPClient http; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" http.begin(host, port, url, httpsFingerprint); #pragma GCC diagnostic pop - return handleUpdate(http, currentVersion, false); + return handleUpdate(http, currentVersion, false, apiKey); } #endif HTTPUpdateResult ESP8266HTTPUpdate::update(WiFiClient& client, const String& host, uint16_t port, const String& uri, - const String& currentVersion) + const String& currentVersion, const char * apiKey) { HTTPClient http; http.begin(client, host, port, uri); - return handleUpdate(http, currentVersion, false); + return handleUpdate(http, currentVersion, false, apiKey); } /** @@ -253,7 +253,7 @@ String ESP8266HTTPUpdate::getLastErrorString(void) * @param currentVersion const char * * @return HTTPUpdateResult */ -HTTPUpdateResult ESP8266HTTPUpdate::handleUpdate(HTTPClient& http, const String& currentVersion, bool spiffs) +HTTPUpdateResult ESP8266HTTPUpdate::handleUpdate(HTTPClient& http, const String& currentVersion, bool spiffs, const chat * apiKey ) { HTTPUpdateResult ret = HTTP_UPDATE_FAILED; @@ -270,6 +270,7 @@ HTTPUpdateResult ESP8266HTTPUpdate::handleUpdate(HTTPClient& http, const String& http.addHeader(F("x-ESP8266-sketch-md5"), String(ESP.getSketchMD5())); http.addHeader(F("x-ESP8266-chip-size"), String(ESP.getFlashChipRealSize())); http.addHeader(F("x-ESP8266-sdk-version"), ESP.getSdkVersion()); + http.addHeader(F("apiKey"), apiKey); if(spiffs) { http.addHeader(F("x-ESP8266-mode"), F("spiffs")); diff --git a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.h b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.h index a61e071f70..59b17e36b0 100644 --- a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.h +++ b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.h @@ -88,46 +88,47 @@ class ESP8266HTTPUpdate #ifdef HTTPUPDATE_1_2_COMPATIBLE // This function is deprecated, use rebootOnUpdate and the next one instead t_httpUpdate_return update(const String& url, const String& currentVersion, - const String& httpsFingerprint, bool reboot) __attribute__((deprecated)); - t_httpUpdate_return update(const String& url, const String& currentVersion = "") __attribute__((deprecated)); + const String& httpsFingerprint, bool reboot, const char * apiKey = "") __attribute__((deprecated)); + t_httpUpdate_return update(const String& url, const String& currentVersion = "", const char * apiKey = "") __attribute__((deprecated)); t_httpUpdate_return update(const String& url, const String& currentVersion, - const String& httpsFingerprint) __attribute__((deprecated)); + const String& httpsFingerprint, const char * apiKey = "") __attribute__((deprecated)); t_httpUpdate_return update(const String& url, const String& currentVersion, - const uint8_t httpsFingerprint[20]) __attribute__((deprecated)); // BearSSL + const uint8_t httpsFingerprint[20], const char * apiKey = "") __attribute__((deprecated)); // BearSSL #endif - t_httpUpdate_return update(WiFiClient& client, const String& url, const String& currentVersion = ""); + t_httpUpdate_return update(WiFiClient& client, const String& url, const String& currentVersion = "", const char * apiKey = ""); #ifdef HTTPUPDATE_1_2_COMPATIBLE // This function is deprecated, use one of the overloads below along with rebootOnUpdate t_httpUpdate_return update(const String& host, uint16_t port, const String& uri, const String& currentVersion, - bool https, const String& httpsFingerprint, bool reboot) __attribute__((deprecated)); + bool https, const String& httpsFingerprint, bool reboot, const char * apiKey = "") __attribute__((deprecated)); t_httpUpdate_return update(const String& host, uint16_t port, const String& uri = "/", - const String& currentVersion = "") __attribute__((deprecated)); + const String& currentVersion = "", const char * apiKey = "") __attribute__((deprecated)); t_httpUpdate_return update(const String& host, uint16_t port, const String& url, - const String& currentVersion, const String& httpsFingerprint) __attribute__((deprecated)); + const String& currentVersion, const String& httpsFingerprint, const char * apiKey = "") __attribute__((deprecated)); t_httpUpdate_return update(const String& host, uint16_t port, const String& url, - const String& currentVersion, const uint8_t httpsFingerprint[20]) __attribute__((deprecated)); // BearSSL + const String& currentVersion, const uint8_t httpsFingerprint[20], const char * apiKey = "") __attribute__((deprecated)); // BearSSL #endif t_httpUpdate_return update(WiFiClient& client, const String& host, uint16_t port, const String& uri = "/", - const String& currentVersion = ""); + const String& currentVersion = "", const char * apiKey = ""); -#ifdef HTTPUPDATE_1_2_COMPATIBLE + #ifdef HTTPUPDATE_1_2_COMPATIBLE + // This function is deprecated, use rebootOnUpdate and the next one instead t_httpUpdate_return updateSpiffs(const String& url, const String& currentVersion, - const String& httpsFingerprint, bool reboot) __attribute__((deprecated)); - t_httpUpdate_return updateSpiffs(const String& url, const String& currentVersion = "") __attribute__((deprecated)); - t_httpUpdate_return updateSpiffs(const String& url, const String& currentVersion, const String& httpsFingerprint) __attribute__((deprecated)); - t_httpUpdate_return updateSpiffs(const String& url, const String& currentVersion, const uint8_t httpsFingerprint[20]) __attribute__((deprecated)); // BearSSL -#endif - t_httpUpdate_return updateSpiffs(WiFiClient& client, const String& url, const String& currentVersion = ""); + const String& httpsFingerprint, bool reboot, const char * apiKey = "") __attribute__((deprecated)); + t_httpUpdate_return updateSpiffs(const String& url, const String& currentVersion = "", const char * apiKey = "") __attribute__((deprecated)); + t_httpUpdate_return updateSpiffs(const String& url, const String& currentVersion, const String& httpsFingerprint, const char * apiKey = "") __attribute__((deprecated)); + t_httpUpdate_return updateSpiffs(const String& url, const String& currentVersion, const uint8_t httpsFingerprint[20], const char * apiKey = "") __attribute__((deprecated)); // BearSSL + #endif + t_httpUpdate_return updateSpiffs(WiFiClient& client, const String& url, const String& currentVersion = "", const char * apiKey = ""); int getLastError(void); String getLastErrorString(void); protected: - t_httpUpdate_return handleUpdate(HTTPClient& http, const String& currentVersion, bool spiffs = false); + t_httpUpdate_return handleUpdate(HTTPClient& http, const String& currentVersion, bool spiffs = false, const char * apiKey = ""); bool runUpdate(Stream& in, uint32_t size, String md5, int command = U_FLASH); int _lastError;