mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
Add HTTP_HEAD to HTTPMethod and parse it (#6413)
* Add HTTP_HEAD to HTTPMethod * Parse the HTTP_HEAD variant of HTTPMethod from a method string * Add HTTP_HEAD to the ESP8266WebServer constants * Skip sending the content of the response if the HTTP method is HEAD method * Convert the HTTP status code 418 to string This status code is an easter egg from the IETF and is described in [RFC2324](https://tools.ietf.org/html/rfc2324#section-2.3.2)
This commit is contained in:
parent
8f45a0fb91
commit
0dbb04e881
@ -42,6 +42,7 @@ hostHeader KEYWORD2
|
|||||||
#######################################
|
#######################################
|
||||||
|
|
||||||
HTTP_GET LITERAL1
|
HTTP_GET LITERAL1
|
||||||
|
HTTP_HEAD LITERAL1
|
||||||
HTTP_POST LITERAL1
|
HTTP_POST LITERAL1
|
||||||
HTTP_ANY LITERAL1
|
HTTP_ANY LITERAL1
|
||||||
CONTENT_LENGTH_UNKNOWN LITERAL1
|
CONTENT_LENGTH_UNKNOWN LITERAL1
|
||||||
|
@ -480,6 +480,7 @@ void ESP8266WebServerTemplate<ServerType>::send(int code, const String& content_
|
|||||||
|
|
||||||
template <typename ServerType>
|
template <typename ServerType>
|
||||||
void ESP8266WebServerTemplate<ServerType>::sendContent(const String& content) {
|
void ESP8266WebServerTemplate<ServerType>::sendContent(const String& content) {
|
||||||
|
if (_currentMethod == HTTP_HEAD) return;
|
||||||
const char * footer = "\r\n";
|
const char * footer = "\r\n";
|
||||||
size_t len = content.length();
|
size_t len = content.length();
|
||||||
if(_chunked) {
|
if(_chunked) {
|
||||||
@ -728,6 +729,7 @@ const String ESP8266WebServerTemplate<ServerType>::responseCodeToString(const in
|
|||||||
case 415: return F("Unsupported Media Type");
|
case 415: return F("Unsupported Media Type");
|
||||||
case 416: return F("Requested range not satisfiable");
|
case 416: return F("Requested range not satisfiable");
|
||||||
case 417: return F("Expectation Failed");
|
case 417: return F("Expectation Failed");
|
||||||
|
case 418: return F("I'm a teapot");
|
||||||
case 500: return F("Internal Server Error");
|
case 500: return F("Internal Server Error");
|
||||||
case 501: return F("Not Implemented");
|
case 501: return F("Not Implemented");
|
||||||
case 502: return F("Bad Gateway");
|
case 502: return F("Bad Gateway");
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
#include "detail/mimetable.h"
|
#include "detail/mimetable.h"
|
||||||
|
|
||||||
enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
|
enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
|
||||||
enum HTTPUploadStatus { UPLOAD_FILE_START, UPLOAD_FILE_WRITE, UPLOAD_FILE_END,
|
enum HTTPUploadStatus { UPLOAD_FILE_START, UPLOAD_FILE_WRITE, UPLOAD_FILE_END,
|
||||||
UPLOAD_FILE_ABORTED };
|
UPLOAD_FILE_ABORTED };
|
||||||
enum HTTPClientStatus { HC_NONE, HC_WAIT_READ, HC_WAIT_CLOSE };
|
enum HTTPClientStatus { HC_NONE, HC_WAIT_READ, HC_WAIT_CLOSE };
|
||||||
@ -194,10 +194,10 @@ protected:
|
|||||||
std::unique_ptr<HTTPUpload> _currentUpload;
|
std::unique_ptr<HTTPUpload> _currentUpload;
|
||||||
int _postArgsLen;
|
int _postArgsLen;
|
||||||
RequestArgument* _postArgs;
|
RequestArgument* _postArgs;
|
||||||
|
|
||||||
int _headerKeysCount;
|
int _headerKeysCount;
|
||||||
RequestArgument* _currentHeaders;
|
RequestArgument* _currentHeaders;
|
||||||
|
|
||||||
size_t _contentLength;
|
size_t _contentLength;
|
||||||
String _responseHeaders;
|
String _responseHeaders;
|
||||||
|
|
||||||
|
@ -99,7 +99,9 @@ bool ESP8266WebServerTemplate<ServerType>::_parseRequest(ClientType& client) {
|
|||||||
_chunked = false;
|
_chunked = false;
|
||||||
|
|
||||||
HTTPMethod method = HTTP_GET;
|
HTTPMethod method = HTTP_GET;
|
||||||
if (methodStr == F("POST")) {
|
if (methodStr == F("HEAD")) {
|
||||||
|
method = HTTP_HEAD;
|
||||||
|
} else if (methodStr == F("POST")) {
|
||||||
method = HTTP_POST;
|
method = HTTP_POST;
|
||||||
} else if (methodStr == F("DELETE")) {
|
} else if (methodStr == F("DELETE")) {
|
||||||
method = HTTP_DELETE;
|
method = HTTP_DELETE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user