Web/response.h
2025-09-15 12:57:54 -05:00

61 lines
1.6 KiB
C

#ifndef RESPONSE_H
#define RESPONSE_H
#include <stddef.h>
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