Example #1
0
static ladders_rec_t *
init_reqrec(lwan_request_t *request, lwan_response_t *response)
{
    ladders_rec_t *rec = NULL;
    static const char errmsg[] = "{\"error\":\"bad parameter\"}";
    const char *start = lwan_request_get_query_param(request, "start");
    const char *goal = lwan_request_get_query_param(request, "goal");

    if (!start || !goal) {
        strbuf_set_static(response->buffer, errmsg, sizeof(errmsg) - 1);
        return NULL;
    }

    strbuf_append_printf(response->buffer,
                         "{\"start\":\"%s\",\"goal\":\"%s\",",
                         start, goal);

    if (start[5] != 0 || strlen(start) < 5 || 
        goal[5] != 0 || strlen(goal) < 5) {
        strbuf_append_str(response->buffer,
                          "\"path\":[],\"error\":\"Paramter start and "
                          "goal should be five-letter words.\"}", 0);
        return NULL;
    }

    rec = malloc(sizeof(*rec));
    strcpy(rec->start, start);
    strcpy(rec->goal, goal);
    rec->response = response;
    strbuf_init(&rec->path);

    return rec;
}
Example #2
0
#include "hithwen/lwan/common/lwan.h"

lwan_http_status_t
hello_world(lwan_request_t *request,
            lwan_response_t *response,
            void *data __attribute__((unused)))
{
    static lwan_key_value_t headers[] = {
        { .key = "X-The-Answer-To-The-Universal-Question", .value = "42" },
        { NULL, NULL }
    };
    response->headers = headers;
    response->mime_type = "text/plain";

    const char *name = lwan_request_get_query_param(request, "name");
    if (name)
        strbuf_printf(response->buffer, "Hello, %s!", name);
    else
        strbuf_set_static(response->buffer, "Hello, world!", sizeof("Hello, world!") -1);

    return HTTP_OK;
}

int
main(void)
{
    lwan_t l;

    lwan_init(&l);
    lwan_main_loop(&l);
    lwan_shutdown(&l);