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; }
#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);