Commit Graph

170 Commits

Author SHA1 Message Date
Arsène von Wyss d7399a7664 Added handler for correct JSON deserialization, addresses #195 (#287)
* Added handler for correct JSON deserialization (even with multiple body data writes), addresses #195

* Fixed typo

* Added JSON handler example to readme

* Moved Json Handler uri parameter to constructor

* Use request->_tempObject for JSON char data buffer

* Moved onRequest to constructor in JSON async handler
2018-07-24 20:56:05 +02:00
Alexandr Zarubkin fc66fae6a9 Allow to override default template placeholder value with #define during compilation. (#366)
Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
2018-07-24 20:26:46 +02:00
Chris Byrne b6b43d35fa Handle multiple WebSocket frames within a TCP packet (#338) 2018-07-24 20:22:54 +02:00
Carlos Ruiz 69865879b4 Fix bug in const String& AsyncWebServerRequest::arg(const __FlashStringHelper * data) const (#334)
Fixes crash in AsyncWebServerRequest::arg with flash string param (eg: `request->arg(F("<arg name>"))` crashes). Solution is to call `strcpy_P` instead of `strcpy`, since the variable `p` is of type `PGM_P` and not `char *`.
2018-07-24 20:21:33 +02:00
Merlin Schumacher fc71230a31 Change JSON MIME type to application/json (#311) 2018-07-24 20:13:14 +02:00
me-no-dev 1078e9166b Add option to skip a callback if source data is not yet available 2018-07-15 10:21:21 +02:00
me-no-dev 28cdcf666d Play nice with regular web server on esp32
Include the regular web server first and then the Async in your sketch
2018-07-05 16:05:04 +02:00
me-no-dev decdca5a73 git went crazy 2018-07-05 11:07:47 +02:00
me-no-dev b0f06c4dbc Merge branch 'master' of https://github.com/me-no-dev/ESPAsyncWebServer 2018-07-05 11:07:05 +02:00
me-no-dev b63ed5d93f fix wrong buffer length in web socket reserve 2018-07-05 11:06:51 +02:00
copercini 44d95ae127 Disable Nagle Algorithm by default (#335)
This speed up the response in up to 10 times
2018-03-10 17:49:31 +01:00
Luc 63b5303880 Allow callback when request disconnects (#284)
* Allow callback when request disconnects

* Use typedef std::function<void(void)> ArDisconnectHandler
2017-11-16 19:45:33 +02:00
Hermann Kraus 8604f67a5f Add documentation for AwsFrameInfo. (#240) 2017-11-06 15:58:07 +02:00
Hermann Kraus c8c1784395 Expose _server and _pinfo members from AsyncWebSocketClient. (#242) 2017-11-06 15:55:58 +02:00
Qc 64adf2972d Update AsyncWebSocket.cpp (#247) 2017-11-06 15:54:49 +02:00
Alexandr Zarubkin bf2ffdc51c Disabled request body parsing if the handler does nothing. (#266)
* Disabled request body parsing if the handler does nothing. This will save memory and prevent crashes on large POST requests.

Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>

* Marked SPIFFSEditor request handler as non-trivial, as it needs to process POST requests.

Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
2017-11-06 15:48:47 +02:00
Alexandr Zarubkin 8139925eb9 Fixed templating engine bug. (#267)
Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
2017-11-06 15:47:45 +02:00
omersiar d366e7c539 This re-enables previously removed WebSocket authentication which is … (#272)
* This re-enables previously removed WebSocket authentication which is orginaly implemented PR #143

* Update README.md
2017-10-30 09:43:31 +01:00
me-no-dev 313f3372c6 Don't send Content Length for WS 101
Fixes: https://github.com/me-no-dev/ESPAsyncWebServer/issues/255
Thanks @keduro :)
2017-10-10 22:38:13 +03:00
me-no-dev 05306e407f Optimize exclude file logic in SPIFFSEditor 2017-10-09 00:28:15 +03:00
me-no-dev e54369756a Disable exclude in Editor 2017-10-08 20:05:08 +03:00
me-no-dev 24c2af600b Add possibility to reference an object to go along with WebSocketClient
fixes https://github.com/me-no-dev/ESPAsyncWebServer/issues/238
2017-10-01 10:13:11 +08:00
Greg Lincoln 46eebddd76 Allow "default" headers to be defined for all responses. (#230)
* Add DefaultHeaders singleton.

* Add documentation for DefaultHeaders.
2017-09-18 13:15:49 +08:00
me-no-dev b681dbc3cd Add cache for the editor
Idea from:
http://tinkerman.cat/embed-your-website-in-your-esp8266-firmware-image/
2017-09-12 23:30:11 +03:00
me-no-dev 3e6690396a Some small adjustments for ESP32
- bump version
- remove compilation warnings
- do not require SPIFFS
2017-09-09 09:04:50 +03:00
me-no-dev 75fb9573e8 Make SPIFFSEditor work with other file systems (ESP32) 2017-09-08 13:36:24 +03:00
arantius fe080dc07e Address compilation warning. (#209)
Specifically: "warning: comparison between signed and unsigned integer
expressions".  Make `i` the same type as `len`, which it is frequently
compared to.
2017-09-07 22:02:46 +03:00
me-no-dev d37bd16c22 Initial ESP32 compatibility 2017-09-07 22:01:58 +03:00
Alexandr Zarubkin 30f9dab08d Fixed chunked file response length. (#219)
Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
2017-09-05 20:13:16 +03:00
Alexandr Zarubkin e6c432e563 Something got lost during pull request #189. Fixes #211, updates documentation. (#213)
* Removed unnecessary memmove from chunked response generation.

* Added simple template processor to AsyncFileResponse.

Unzipped files in SPIFFS, Streams, PROGMEM strings, callback/chunked responses may have template placeholders like %TEMPLATE_VAR% inside. If callback is specified in Async...Response constructor call, it will be used to replace these with actual strings.
The prototype of callback is String(const String&), i.e. it gets variable name and returns its value.
Template variables' delimiter is currently percent sign ('%').
Maximal placeholder length is 32 chars (chosen somewhat arbitrarily, it may be stored on stack during processing). It is not guaranteed that placeholders longer than that will be processed.

Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
2017-08-31 19:44:23 +03:00
Me No Dev 2540507664 The following changes and enhancements are included: (#208)
- Added "SAVE-Button
- Upgraded to ACE 1.2.6
- Added additional field, which shows name of the current edited File
- Reset upload path after uploading or creating a File (avoid confusion about which file is shown in editor)
- added the possibility, to run the editor completly from flash. When ace.js.gz or ace.js and the corresponding files are found on SPIFFS, the editor can be used in AP mode also.  Otherwise the files are searched on cloudflare like before.
- added all gzipped js-files in data directory
- added an exclude list, containing wildcards, telling which files should not be listed in the editor (to prevent deletion of needed files)
- minified the embedded HTML/Javascript with https://kangax.github.io/html-minifier/ before gzipping.  With all additions the resulting hex-code is now 700 bytes smaller
- embedded the plain html as documentation
2017-08-18 20:14:12 +03:00
Alexandr Zarubkin 0179c17cf9 Added simple template processor to AsyncFileResponse. (#189)
Unzipped files in SPIFFS, Streams, PROGMEM strings, callback/chunked responses may have template placeholders like %TEMPLATE_VAR% inside. If callback is specified in Async...Response constructor call, it will be used to replace these with actual strings.
The prototype of callback is String(const String&), i.e. it gets variable name and returns its value.
Template variables' delimiter is currently percent sign ('%').
Maximal placeholder length is 32 chars (chosen somewhat arbitrarily, it may be stored on stack during processing). It is not guaranteed that placeholders longer than that will be processed.

Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>

# Conflicts:
#	src/WebResponses.cpp
2017-08-18 17:59:06 +03:00
Me No Dev 77a520ba24 This commit solves issues 172 and 198 (#207)
* This commit solves issues 172 and 198

* This commit solves issues 172 and 198
2017-08-18 17:52:21 +03:00
Me No Dev 05ed854d7b Update SPIFFSEditor.cpp
Fix URL Encode logic
2017-08-18 17:41:31 +03:00
Alexandr Zarubkin 4dcd458d13 Removed unnecessary memmove from chunked response generation. (#188) 2017-08-18 11:54:52 +03:00
Mariusz Kryński 3d0cf89d58 Fix url decoding in POST / GET requests (#185) 2017-08-18 11:53:57 +03:00
probonopd 2e6dff35bd Allow for double quotes in boundary, closes #191 (#192)
https://tools.ietf.org/html/rfc2046#section-5.1.1
2017-08-17 20:17:21 +03:00
omersiar e56e1a6370 Bug Fix for #175 and #167 (#182)
Prevent double MD5 hashing
2017-06-21 12:37:19 +02:00
Trygve Laugstøl be12e0c171 Fixing compiler warnings exposed with -Wall and -Wextra: (#159)
AsyncWebHandler::setAuthentication: return is required.
AsyncWebSocketMultiMessage::~AsyncWebSocketMultiMessage: error: enumeral and non-enumeral type in conditional expression.
2017-04-20 11:14:00 +03:00
Trygve Laugstøl 2c4128c7cd Minor cleanup of AsyncWebServer, removing unneeded casts. (#156) 2017-04-10 17:10:02 +03:00
Alexandr Zarubkin ab61227a8a The previous event need not be ACKed to send the next one (it will be queued). (#149)
Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
2017-04-06 10:11:48 +02:00
Charles 120984e6d2 Added getSize() to know JSON buffer size (#151)
* Added doc for ws.enable and ws.enabled

* added getSize()
2017-04-06 10:10:59 +02:00
probonopd 09dde693ba Solve error "previous definition of 'class fs::File'" (#147)
As per https://github.com/me-no-dev/ESPAsyncWebServer/issues/111#issuecomment-288265916 by @boblemaire
2017-03-22 10:23:37 +01:00
sticilface 1b35f15ec2 Web Sockets memory improvements : shared message buffer, direct buffer access (#144)
* Add support for a MultiMessage where the buffer is shared between WS messages to multiple clients.
Add ability to create a WS buffer directly and write to it, saving duplication of message in RAM, then send it.  example below is an arduinoJson message.

```cpp
void sendDataWs(AsyncWebSocketClient * client)
{
    DynamicJsonBuffer jsonBuffer;
    JsonObject& root = jsonBuffer.createObject();
    root["a"] = "abc";
    root["b"] = "abcd";
    root["c"] = "abcde";
    root["d"] = "abcdef";
    root["e"] = "abcdefg";
    size_t len = root.measureLength();
    AsyncWebSocketMessageBuffer * buffer = ws.makeBuffer(len); //  creates a buffer (len + 1) for you.
    if (buffer) {
        root.printTo((char *)buffer->get(), len + 1);
        if (client) {
            client->text(buffer);
        } else {
            ws.textAll(buffer);
        }
    }
}
```

* Add example to readme.
2017-03-14 14:55:39 +01:00
sticilface b9641902bf Events Source Message Queue (#129)
* Events Source Message Queue
 - Fixes problem where events sent close together are silently dropped.

* Update AsyncEventSource.cpp

error
2017-03-11 09:57:37 +01:00
Zhenyu Wu fce6aad2c3 Remove Rx timeout constraint in the request response stage, fix premature connection termination (#121) 2017-03-05 20:15:25 +02:00
sticilface edf6c75f8c Fix memory leak in __flashString Web sockets implementation. (#136) 2017-03-05 20:07:17 +02:00
sticilface 3afc669f10 Flash String support (#137)
* Flash String support

* use strlen_P and strcpy_p
2017-03-05 20:06:57 +02:00
Tuan PM 9b66da2c92 Add basic auth for server static (#143)
* Add basic auth for server static

* Also effect to Websocket

* Add http basic auth for event source & document to README.md
2017-03-05 20:02:33 +02:00
Me No Dev bab5457584 Fix case where space is not enough for a chunk 2017-01-25 21:25:21 +02:00