A stack which works with or without an Mbed os library. Provides IPv4 or IPv6 with a full 1500 byte buffer.

Dependents:   oldheating gps motorhome heating

tcp/http/http.h

Committer:
andrewboyson
Date:
2019-05-12
Revision:
144:6bd5c54efc7d
Parent:
141:25047f31dbab
Child:
145:206bf0d073c7

File content as of revision 144:6bd5c54efc7d:

#include <stdbool.h>
#include <stdarg.h>
#include <stdint.h>
#include <time.h>

extern void   HttpAddChar       (char c);
extern void   HttpFillChar      (char c, int length);
extern int    HttpAddText       (const char* text);
extern int    HttpAddV          (char *fmt, va_list argptr);
extern int    HttpAddF          (char *fmt, ...);
extern void   HttpAddData       (const char* data, int length);
extern void   HttpAddStream     (void (*startFunction)(void), int (*enumerateFunction)(void));
extern void   HttpAddNibbleAsHex(int value);
extern void   HttpAddByteAsHex  (int value);
extern void   HttpAddInt12AsHex (int value);
extern void   HttpAddInt16AsHex (int value);
extern void   HttpAddInt32AsHex (int value);
extern void   HttpAddInt64AsHex (int64_t value);
extern void   HttpAddTm         (struct tm* ptm);
extern int    HttpGetLength     (void);

extern void   HttpOk(const char* contentType, const char* cacheControl, const char* lastModifiedDate, const char* lastModifiedTime);
extern char*  HttpOkCookieName;
extern char*  HttpOkCookieValue;
extern int    HttpOkCookieMaxAge;

extern void   HttpNotFound      (void);
extern void   HttpNotModified   (void);

extern int    HttpRequestRead  (char *p, int len, char** ppMethod, char** ppPath, char** ppQuery, char** ppLastModified, char** ppCookies, int* pContentLength);

extern char*  HttpCookiesSplit   (char* pCookies, char** ppName, char** ppValue);
extern char*  HttpQuerySplit     (char* pQuery,   char** ppName, char** ppValue);
extern int    HttpQueryValueAsInt(char* pValue);
extern void   HttpQueryUnencode  (char* pValue);

extern void (*HttpRequestFunction)(int size, char* pRequestStream, uint32_t positionInRequestStream, char* pState);
extern int  (*HttpReplyFunction  )(char* pState);

extern bool   HttpTrace;
extern void   HttpHandleRequest(int   size, char* pRequestStream, uint32_t positionInRequestStream, char* pState);
extern int    HttpSendReply    (int* pSize, char* pReplyStream,   uint32_t positionInReplyStream, uint16_t mss, char* pState);

extern void   HttpDateFromDateTime(const char* date, const char *ptime, char* ptext);
extern void   HttpDateFromNow(char* pText);

extern bool HttpSameStr               (const char* pa,   const char* pb);
extern bool HttpSameStrCaseInsensitive(const char* pa,   const char* pb);
extern bool HttpSameDate              (const char* date, const char* time, const char* pOtherDate);

#define HTTP_DATE_LENGTH 30