#include "json.h"

void json_escape_print(FILE *out, const char *s) {
    for (; *s != '\0'; s++) {
        unsigned char c = (unsigned char)*s;
        switch (c) {
            case '"':
                fputs("\\\"", out);
                break;
            case '\\':
                fputs("\\\\", out);
                break;
            case '\b':
                fputs("\\b", out);
                break;
            case '\f':
                fputs("\\f", out);
                break;
            case '\n':
                fputs("\\n", out);
                break;
            case '\r':
                fputs("\\r", out);
                break;
            case '\t':
                fputs("\\t", out);
                break;
            default:
                if (c < 0x20) {
                    fprintf(out, "\\u%04x", c);
                } else {
                    fputc(c, out);
                }
                break;
        }
    }
}

void json_error_response(const char *status, const char *message) {
    printf("Status: %s\r\n", status);
    printf("Content-Type: application/json; charset=UTF-8\r\n\r\n");
    printf("{\"error\":\"");
    json_escape_print(stdout, message);
    printf("\"}\n");
}
