webserver.c/response.c
2024-02-12 16:57:40 -05:00

41 lines
1.1 KiB
C

#include "response.h"
#include "header.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BUFFER_SIZE 2048
struct Response response_constructor(char *version, char *status, char *body) {
struct Response response;
response.version = strdup(version);
response.status = strdup(status);
response.body = strdup(body);
response.num_headers = 0;
response.headers = NULL;
return response;
}
void add_header(struct Response *response, char *key, char *value) {
struct Header header = header_constructor(key, value);
response->headers = realloc(
response->headers, sizeof(struct Header) * (response->num_headers + 1));
response->headers[response->num_headers++] = header;
}
void response_to_string(char *buf, struct Response *response) {
char headers[MAX_BUFFER_SIZE];
headers[0] = '\0';
for (int i = 0; i < response->num_headers; i++) {
strcat(headers, response->headers[i].key);
strcat(headers, ": ");
strcat(headers, response->headers[i].value);
strcat(headers, "\r\n");
}
snprintf(buf, MAX_BUFFER_SIZE, "%s %s\r\n%s\r\n%s", response->version,
response->status, headers, response->body);
}