Skip to content

Commit bb3cd32

Browse files
Update HTTPUpdateServer and examples to template
1 parent 01a992f commit bb3cd32

File tree

6 files changed

+30
-20
lines changed

6 files changed

+30
-20
lines changed

libraries/ESP8266HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const char* ssid = "........";
2727
const char* password = "........";
2828

2929
BearSSL::ESP8266WebServerSecure httpServer(443);
30-
ESP8266HTTPUpdateServer httpUpdater;
30+
ESP8266HTTPUpdateServerTemplate<BearSSL::WiFiServerSecure, BearSSL::WiFiClientSecure> httpUpdater;
3131

3232
static const char serverCert[] PROGMEM = R"EOF(
3333
-----BEGIN CERTIFICATE-----

libraries/ESP8266HTTPUpdateServer/examples/SecureHTTPSUpdater/SecureHTTPSUpdater.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const char* ssid = "........";
5656
const char* password = "........";
5757

5858
ESP8266WebServerSecure httpServer(443);
59-
ESP8266HTTPUpdateServer httpUpdater;
59+
ESP8266HTTPUpdateServerTemplate<axTLS::WiFiServerSecure, axTLS::WiFiClientSecure> httpUpdater;
6060

6161
// The certificate is stored in PMEM
6262
static const uint8_t x509[] PROGMEM = {

libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp renamed to libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer-impl.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66
#include "StreamString.h"
77
#include "ESP8266HTTPUpdateServer.h"
88

9-
10-
static const char serverIndex[] PROGMEM =
9+
static const char serverIndex[] =
1110
R"(<html><body><form method='POST' action='' enctype='multipart/form-data'>
1211
<input type='file' name='update'>
1312
<input type='submit' value='Update'>
1413
</form>
1514
</body></html>)";
16-
static const char successResponse[] PROGMEM =
15+
static const char successResponse[] =
1716
"<META http-equiv=\"refresh\" content=\"15;URL=/\">Update Success! Rebooting...\n";
1817

19-
ESP8266HTTPUpdateServer::ESP8266HTTPUpdateServer(bool serial_debug)
18+
template <class ServerClass, class ClientClass>
19+
ESP8266HTTPUpdateServerTemplate<ServerClass, ClientClass>::ESP8266HTTPUpdateServerTemplate(bool serial_debug)
2020
{
2121
_serial_output = serial_debug;
2222
_server = NULL;
@@ -25,7 +25,8 @@ ESP8266HTTPUpdateServer::ESP8266HTTPUpdateServer(bool serial_debug)
2525
_authenticated = false;
2626
}
2727

28-
void ESP8266HTTPUpdateServer::setup(ESP8266WebServer *server, const char * path, const char * username, const char * password)
28+
template <class ServerClass, class ClientClass>
29+
void ESP8266HTTPUpdateServerTemplate<ServerClass, ClientClass>::setup(ESP8266WebServerTemplate<ServerClass, ClientClass> *server, const char * path, const char * username, const char * password)
2930
{
3031
_server = server;
3132
_username = (char *)username;
@@ -35,18 +36,18 @@ void ESP8266HTTPUpdateServer::setup(ESP8266WebServer *server, const char * path,
3536
_server->on(path, HTTP_GET, [&](){
3637
if(_username != NULL && _password != NULL && !_server->authenticate(_username, _password))
3738
return _server->requestAuthentication();
38-
_server->send_P(200, PSTR("text/html"), serverIndex);
39+
_server->send_P(200, ("text/html"), serverIndex);
3940
});
4041

4142
// handler for the /update form POST (once file upload finishes)
4243
_server->on(path, HTTP_POST, [&](){
4344
if(!_authenticated)
4445
return _server->requestAuthentication();
4546
if (Update.hasError()) {
46-
_server->send(200, F("text/html"), String(F("Update error: ")) + _updaterError);
47+
_server->send(200, ("text/html"), String(("Update error: ")) + _updaterError);
4748
} else {
4849
_server->client().setNoDelay(true);
49-
_server->send_P(200, PSTR("text/html"), successResponse);
50+
_server->send_P(200, ("text/html"), successResponse);
5051
delay(100);
5152
_server->client().stop();
5253
ESP.restart();
@@ -95,7 +96,8 @@ void ESP8266HTTPUpdateServer::setup(ESP8266WebServer *server, const char * path,
9596
});
9697
}
9798

98-
void ESP8266HTTPUpdateServer::_setUpdaterError()
99+
template <class ServerClass, class ClientClass>
100+
void ESP8266HTTPUpdateServerTemplate<ServerClass, ClientClass>::_setUpdaterError()
99101
{
100102
if (_serial_output) Update.printError(Serial);
101103
StreamString str;
Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
11
#ifndef __HTTP_UPDATE_SERVER_H
22
#define __HTTP_UPDATE_SERVER_H
33

4-
class ESP8266WebServer;
4+
#include <ESP8266WebServer.h>
55

6-
class ESP8266HTTPUpdateServer
6+
template<class ServerClass, class ClientClass>
7+
class ESP8266HTTPUpdateServerTemplate
78
{
89
public:
9-
ESP8266HTTPUpdateServer(bool serial_debug=false);
10+
ESP8266HTTPUpdateServerTemplate(bool serial_debug=false);
1011

11-
void setup(ESP8266WebServer *server)
12+
void setup(ESP8266WebServerTemplate<ServerClass, ClientClass> *server)
1213
{
1314
setup(server, NULL, NULL);
1415
}
1516

16-
void setup(ESP8266WebServer *server, const char * path)
17+
void setup(ESP8266WebServerTemplate<ServerClass, ClientClass> *server, const char * path)
1718
{
1819
setup(server, path, NULL, NULL);
1920
}
2021

21-
void setup(ESP8266WebServer *server, const char * username, const char * password)
22+
void setup(ESP8266WebServerTemplate<ServerClass, ClientClass> *server, const char * username, const char * password)
2223
{
2324
setup(server, "/update", username, password);
2425
}
2526

26-
void setup(ESP8266WebServer *server, const char * path, const char * username, const char * password);
27+
void setup(ESP8266WebServerTemplate<ServerClass, ClientClass> *server, const char * path, const char * username, const char * password);
2728

2829
void updateCredentials(const char * username, const char * password)
2930
{
@@ -36,12 +37,15 @@ class ESP8266HTTPUpdateServer
3637

3738
private:
3839
bool _serial_output;
39-
ESP8266WebServer *_server;
40+
ESP8266WebServerTemplate<ServerClass, ClientClass> *_server;
4041
char * _username;
4142
char * _password;
4243
bool _authenticated;
4344
String _updaterError;
4445
};
4546

47+
#include "ESP8266HTTPUpdateServer-impl.h"
48+
49+
typedef ESP8266HTTPUpdateServerTemplate<WiFiServer, WiFiClient> ESP8266HTTPUpdateServer;
4650

4751
#endif

libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ void ESP8266WebServerTemplate<ServerClass, ClientClass>::_streamFileCore(const s
515515
if (fileName.endsWith(String(FPSTR(mimeTable[gz].endsWith))) &&
516516
contentType != String(FPSTR(mimeTable[gz].mimeType)) &&
517517
contentType != String(FPSTR(mimeTable[none].mimeType))) {
518-
sendHeader(F("Content-Encoding"), F("gzip"));
518+
sendHeader(("Content-Encoding"), ("gzip"));
519519
}
520520
send(200, contentType, "");
521521
}

libraries/ESP8266WebServer/src/ESP8266WebServerSecure.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121

2222
#include "ESP8266WebServer.h"
2323

24+
#ifndef ESP8266SECUREWEBSERVER_H
25+
#define ESP8266SECUREWEBSERVER_H
26+
2427
namespace axTLS {
2528
typedef ESP8266WebServerTemplate<WiFiServerSecure, WiFiClientSecure> ESP8266WebServerSecure;
2629
};
@@ -29,3 +32,4 @@ namespace BearSSL {
2932
typedef ESP8266WebServerTemplate<WiFiServerSecure, WiFiClientSecure> ESP8266WebServerSecure;
3033
};
3134

35+
#endif

0 commit comments

Comments
 (0)