diff --git a/src/app/WEBServer.h b/src/app/WEBServer.h index 7aaab7f..d40f9dd 100644 --- a/src/app/WEBServer.h +++ b/src/app/WEBServer.h @@ -48,15 +48,11 @@ class WEBServer : public TCPServer, public HttpConstants } //Helper function used for the webApi - static void injectApiHeader(char *header, const char *contentType, const char *content) + static void sendHTTPHeader(WiFiClient *client, const char *contentType, const size_t contentLength, HttpVersion version = HttpVersion::HTTP_1_1, HTTP_CODE HTTPCode = HTTP_CODE::HTTP_CODE_OK) { - char *buffer = (char *)malloc(sizeof(char) * strlen(content) + 1); - if(buffer != NULL) - { - strcpy(buffer, content); - sprintf(header,"HTTP/1.1 200 OK\r\nContent-Type: %s\r\nContent-Length: %d\r\n\r\n%s",contentType,strlen(buffer), buffer); - free(buffer); - } + if(!client) return; + (void)HTTPCode; + client->printf("%s 200 OK\r\nContent-Type: %s\r\nContent-Length: %d\r\n\r\n", httpVersionToString(version), contentType, contentLength); } void setWWWDir(const char *WWWDir) @@ -666,47 +662,18 @@ class WEBServer : public TCPServer, public HttpConstants else return UNKNOWN_MIME; } - static char *getHTTPHeader(HttpMIMEType httpMIMEType, size_t size) + static char *getHTTPHeader(HttpMIMEType httpMIMEType, const size_t size) { char *header = (char *) malloc(sizeof(char) /*strlen("HTTP/1.1 200 OK\r\nContent-Type: \r\nContent-Length: \r\nCache-Control: max-age=31536000\r\n\r\n")*/* (86 + 255/*Longest MIME-TYPE that RFC allows*/ + 10 /*Max unsigned long footprint*/ + 1)); - - switch(httpMIMEType) - { - case TEXT_HTML: - injectHeaderLayout(header,"text/html", size); - break; - case TEXT_CSS: - injectHeaderLayout(header,"text/css", size); - break; - case TEXT_JAVASCRIPT: - injectHeaderLayout(header,"text/javascript", size); - break; - case IMAGE_PNG: - injectHeaderLayout(header,"image/png", size); - break; - case IMAGE_JPEG: - injectHeaderLayout(header,"image/jpeg", size); - break; - case TEXT_PLAIN: - injectHeaderLayout(header,"text/plain", size); - break; - case AUDIO_MPEG: - injectHeaderLayout(header,"audio/mpeg", size); - break; - case APPLICATION_OCTET_STREAM: - injectHeaderLayout(header,"application/octet-stream", size); - break; - default: - injectHeaderLayout(header,"application/octet-stream", size); - break; - } + + injectHeaderLayout(header, httpMIMETypeToString(httpMIMEType), size); return header; } - static void injectHeaderLayout(char *header, const char *contentType, size_t size) + static void injectHeaderLayout(char *header, const char *contentType, const size_t size) { - sprintf(header,"HTTP/1.1 200 OK\r\nContent-Type: %s\r\nContent-Length: %u\r\nCache-Control: max-age=31536000\r\n\r\n",contentType,size); + sprintf(header,"HTTP/1.1 200 OK\r\nContent-Type: %s\r\nContent-Length: %u\r\nCache-Control: max-age=31536000\r\n\r\n", contentType, size); } static char *getFileExtension(char *name)