#ifndef RESPONSE_H #define RESPONSE_H #include typedef struct response response_t; typedef struct response_header response_header_t; // Response header struct response_header { char *name; char *value; response_header_t *next; }; // HTTP response struct response { int status_code; char *status_text; response_header_t *headers; char *body; size_t body_len; size_t body_cap; int headers_sent; }; // Response creation response_t* response_new(void); void response_free(response_t *res); void response_reset(response_t *res); // Status response_t* response_status(response_t *res, int code); // Headers response_t* response_header(response_t *res, const char *name, const char *value); response_t* response_content_type(response_t *res, const char *type); response_t* response_content_length(response_t *res, size_t len); // Body response_t* response_body(response_t *res, const char *data, size_t len); response_t* response_write(response_t *res, const char *data, size_t len); // Convenience methods response_t* response_text(response_t *res, int status, const char *text); response_t* response_html(response_t *res, int status, const char *html); response_t* response_json(response_t *res, int status, const char *json); response_t* response_redirect(response_t *res, const char *url, int status); // Cookie response_t* response_cookie(response_t *res, const char *name, const char *value, const char *path, int max_age, int http_only, int secure); // Serialize to buffer int response_serialize(response_t *res, char *buf, size_t size); #endif // RESPONSE_H