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

32 lines
1010 B
C

#include "http_response.h"
#include <string.h>
void HttpResponseHeader_Start(HttpResponseHeader *o, const char *code, const char *msg)
{
DynamicBuffer_Clear(&o->buffer);
DynamicBuffer_Append(&o->buffer, "HTTP/1.1 ", 9);
DynamicBuffer_AppendString(&o->buffer, code);
DynamicBuffer_Append(&o->buffer, " ", 1);
DynamicBuffer_AppendString(&o->buffer, msg);
DynamicBuffer_Append(&o->buffer, "\r\n", 2);
}
void HttpResponseHeader_AppendField(HttpResponseHeader *o, const char *field, const char *value)
{
DynamicBuffer_AppendString(&o->buffer, field);
DynamicBuffer_Append(&o->buffer, ": ", 2);
DynamicBuffer_AppendString(&o->buffer, value);
DynamicBuffer_Append(&o->buffer, "\r\n", 2);
}
void HttpResponseHeader_EndWithContentLength(HttpResponseHeader *o, size_t size)
{
char content_length[256];
sprintf(content_length, "%lu", size);
HttpResponseHeader_AppendField(o, "Content-Length", content_length);
DynamicBuffer_Append(&o->buffer, "\r\n\0", 3);
}