Unverified Commit bef8a75e authored by Thomas's avatar Thomas Committed by GitHub

Added HTTPUpdate request callback (#7934)

* Added HTTPUpdate request callback

* Fixed compile issue for example

---------
Co-authored-by: default avatarMe No Dev <me-no-dev@users.noreply.github.com>
parent 57b951a1
...@@ -106,7 +106,9 @@ void loop() { ...@@ -106,7 +106,9 @@ void loop() {
// value is used to put the LED on. If the LED is on with HIGH, that value should be passed // value is used to put the LED on. If the LED is on with HIGH, that value should be passed
// httpUpdate.setLedPin(LED_BUILTIN, HIGH); // httpUpdate.setLedPin(LED_BUILTIN, HIGH);
t_httpUpdate_return ret = httpUpdate.update(client, "https://server/file.bin"); t_httpUpdate_return ret = httpUpdate.update(client, "https://server/file.bin", "", [](HTTPClient *client) {
client->setAuthorization("test", "password");
});
// Or: // Or:
//t_httpUpdate_return ret = httpUpdate.update(client, "server", 443, "/file.bin"); //t_httpUpdate_return ret = httpUpdate.update(client, "server", 443, "/file.bin");
......
...@@ -48,46 +48,46 @@ HTTPUpdate::~HTTPUpdate(void) ...@@ -48,46 +48,46 @@ HTTPUpdate::~HTTPUpdate(void)
{ {
} }
HTTPUpdateResult HTTPUpdate::update(WiFiClient& client, const String& url, const String& currentVersion) HTTPUpdateResult HTTPUpdate::update(WiFiClient& client, const String& url, const String& currentVersion, HTTPUpdateRequestCB requestCB)
{ {
HTTPClient http; HTTPClient http;
if(!http.begin(client, url)) if(!http.begin(client, url))
{ {
return HTTP_UPDATE_FAILED; return HTTP_UPDATE_FAILED;
} }
return handleUpdate(http, currentVersion, false); return handleUpdate(http, currentVersion, false, requestCB);
} }
HTTPUpdateResult HTTPUpdate::updateSpiffs(HTTPClient& httpClient, const String& currentVersion) HTTPUpdateResult HTTPUpdate::updateSpiffs(HTTPClient& httpClient, const String& currentVersion, HTTPUpdateRequestCB requestCB)
{ {
return handleUpdate(httpClient, currentVersion, true); return handleUpdate(httpClient, currentVersion, true, requestCB);
} }
HTTPUpdateResult HTTPUpdate::updateSpiffs(WiFiClient& client, const String& url, const String& currentVersion) HTTPUpdateResult HTTPUpdate::updateSpiffs(WiFiClient& client, const String& url, const String& currentVersion, HTTPUpdateRequestCB requestCB)
{ {
HTTPClient http; HTTPClient http;
if(!http.begin(client, url)) if(!http.begin(client, url))
{ {
return HTTP_UPDATE_FAILED; return HTTP_UPDATE_FAILED;
} }
return handleUpdate(http, currentVersion, true); return handleUpdate(http, currentVersion, true, requestCB);
} }
HTTPUpdateResult HTTPUpdate::update(HTTPClient& httpClient, HTTPUpdateResult HTTPUpdate::update(HTTPClient& httpClient,
const String& currentVersion) const String& currentVersion, HTTPUpdateRequestCB requestCB)
{ {
return handleUpdate(httpClient, currentVersion, false); return handleUpdate(httpClient, currentVersion, false, requestCB);
} }
HTTPUpdateResult HTTPUpdate::update(WiFiClient& client, const String& host, uint16_t port, const String& uri, HTTPUpdateResult HTTPUpdate::update(WiFiClient& client, const String& host, uint16_t port, const String& uri,
const String& currentVersion) const String& currentVersion, HTTPUpdateRequestCB requestCB)
{ {
HTTPClient http; HTTPClient http;
if(!http.begin(client, host, port, uri)) if(!http.begin(client, host, port, uri))
{ {
return HTTP_UPDATE_FAILED; return HTTP_UPDATE_FAILED;
} }
return handleUpdate(http, currentVersion, false); return handleUpdate(http, currentVersion, false, requestCB);
} }
/** /**
...@@ -180,7 +180,7 @@ String getSketchSHA256() { ...@@ -180,7 +180,7 @@ String getSketchSHA256() {
* @param currentVersion const char * * @param currentVersion const char *
* @return HTTPUpdateResult * @return HTTPUpdateResult
*/ */
HTTPUpdateResult HTTPUpdate::handleUpdate(HTTPClient& http, const String& currentVersion, bool spiffs) HTTPUpdateResult HTTPUpdate::handleUpdate(HTTPClient& http, const String& currentVersion, bool spiffs, HTTPUpdateRequestCB requestCB)
{ {
HTTPUpdateResult ret = HTTP_UPDATE_FAILED; HTTPUpdateResult ret = HTTP_UPDATE_FAILED;
...@@ -216,6 +216,9 @@ HTTPUpdateResult HTTPUpdate::handleUpdate(HTTPClient& http, const String& curren ...@@ -216,6 +216,9 @@ HTTPUpdateResult HTTPUpdate::handleUpdate(HTTPClient& http, const String& curren
if(currentVersion && currentVersion[0] != 0x00) { if(currentVersion && currentVersion[0] != 0x00) {
http.addHeader("x-ESP32-version", currentVersion); http.addHeader("x-ESP32-version", currentVersion);
} }
if (requestCB) {
requestCB(&http);
}
const char * headerkeys[] = { "x-MD5" }; const char * headerkeys[] = { "x-MD5" };
size_t headerkeyssize = sizeof(headerkeys) / sizeof(char*); size_t headerkeyssize = sizeof(headerkeys) / sizeof(char*);
......
...@@ -53,6 +53,7 @@ enum HTTPUpdateResult { ...@@ -53,6 +53,7 @@ enum HTTPUpdateResult {
typedef HTTPUpdateResult t_httpUpdate_return; // backward compatibility typedef HTTPUpdateResult t_httpUpdate_return; // backward compatibility
using HTTPUpdateStartCB = std::function<void()>; using HTTPUpdateStartCB = std::function<void()>;
using HTTPUpdateRequestCB = std::function<void(HTTPClient*)>;
using HTTPUpdateEndCB = std::function<void()>; using HTTPUpdateEndCB = std::function<void()>;
using HTTPUpdateErrorCB = std::function<void(int)>; using HTTPUpdateErrorCB = std::function<void(int)>;
using HTTPUpdateProgressCB = std::function<void(int, int)>; using HTTPUpdateProgressCB = std::function<void(int, int)>;
...@@ -84,17 +85,18 @@ public: ...@@ -84,17 +85,18 @@ public:
_ledOn = ledOn; _ledOn = ledOn;
} }
t_httpUpdate_return update(WiFiClient& client, const String& url, const String& currentVersion = ""); t_httpUpdate_return update(WiFiClient& client, const String& url, const String& currentVersion = "", HTTPUpdateRequestCB requestCB = NULL);
t_httpUpdate_return update(WiFiClient& client, const String& host, uint16_t port, const String& uri = "/", t_httpUpdate_return update(WiFiClient& client, const String& host, uint16_t port, const String& uri = "/",
const String& currentVersion = ""); const String& currentVersion = "", HTTPUpdateRequestCB requestCB = NULL);
t_httpUpdate_return updateSpiffs(WiFiClient& client, const String& url, const String& currentVersion = ""); t_httpUpdate_return updateSpiffs(WiFiClient& client, const String& url, const String& currentVersion = "", HTTPUpdateRequestCB requestCB = NULL);
t_httpUpdate_return update(HTTPClient& httpClient, t_httpUpdate_return update(HTTPClient& httpClient,
const String& currentVersion = ""); const String& currentVersion = "",
HTTPUpdateRequestCB requestCB = NULL);
t_httpUpdate_return updateSpiffs(HTTPClient &httpClient, const String &currentVersion = ""); t_httpUpdate_return updateSpiffs(HTTPClient &httpClient, const String &currentVersion = "", HTTPUpdateRequestCB requestCB = NULL);
// Notification callbacks // Notification callbacks
void onStart(HTTPUpdateStartCB cbOnStart) { _cbStart = cbOnStart; } void onStart(HTTPUpdateStartCB cbOnStart) { _cbStart = cbOnStart; }
...@@ -106,7 +108,7 @@ public: ...@@ -106,7 +108,7 @@ public:
String getLastErrorString(void); String getLastErrorString(void);
protected: 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, HTTPUpdateRequestCB requestCB = NULL);
bool runUpdate(Stream& in, uint32_t size, String md5, int command = U_FLASH); bool runUpdate(Stream& in, uint32_t size, String md5, int command = U_FLASH);
// Set the error and potentially use a CB to notify the application // Set the error and potentially use a CB to notify the application
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment