toys/simple-http-server-c/source/http_response.h

40 lines
1.2 KiB
C

#pragma once
#include "dynamic_buffer.h"
#if defined (__cplusplus)
extern "C" {
#endif
/// HTTP/1.1 <CODE> <MESSAGE>
/// <HEADERS>
typedef struct HttpResponseHeader
{
DynamicBuffer buffer;
} HttpResponseHeader;
/// #define HttpResponseHeader_Construct DynamicBuffer_Construct
/// #define HttpResponseHeader_Destruct DynamicBuffer_Destruct
#define HttpResponseHeader_Construct(o) do { \
DynamicBuffer_Construct(&(((HttpResponseHeader *)(o))->buffer)); \
} while (0)
#define HttpResponseHeader_Destruct(o) do { \
DynamicBuffer_Destruct(&(((HttpResponseHeader *)(o))->buffer)); \
} while (0)
#define HttpResponseHeader_End(o) do {\
DynamicBuffer_Append(&(((HttpResponseHeader *)(o))->buffer), "\r\n\0", 3); \
} while (0)
#define HttpResponseHeader_AsString(o) (const char *)(DynamicBuffer_Buffer(&((DynamicBuffer *)(o))->buffer))
#define HttpResponseHeader_Size(o) (DynamicBuffer_Size(&((DynamicBuffer *)(o))->buffer) - 1)
void HttpResponseHeader_Start(HttpResponseHeader *o, const char *code, const char *msg);
void HttpResponseHeader_AppendField(HttpResponseHeader *o, const char *field, const char *value);
void HttpResponseHeader_EndWithContentLength(HttpResponseHeader *o, size_t size);
#if defined (__cplusplus)
}
#endif