void webif_test(evhtp_request_t * req, void * a) { evhtp_kv_t* kv_cmd = evhtp_kvs_find_kv(req->uri->query, "cmd"); evhtp_kv_t* kv_jscb = evhtp_kvs_find_kv(req->uri->query, "jsoncallback"); if (!kv_cmd) goto invalid_params; if (!kv_jscb) { evbuffer_add_printf(req->buffer_out, "your command is %s", kv_cmd->val); } else { evbuffer_add_printf(req->buffer_out, "%s({\"command\" : \"%s\"})", kv_jscb->val, kv_cmd->val); } evhtp_send_reply(req, EVHTP_RES_OK); return; invalid_params: common_invalid_reply(req, kv_jscb); return; }
static int query_test(const char * raw_query, int exp_error, struct expected exp[], int flags) { evhtp_query_t * query; struct expected * check; int key_idx = 0; int idx = 0; int num_errors = 0; /* print whether error is expected or not */ printf("%-7s ", exp_error ? "(error)" : ""); query = evhtp_parse_query_wflags(raw_query, strlen(raw_query), flags); if (!query) { printf("<error>"); return exp_error == 0; } printf("{"); evhtp_kvs_for_each(query, kvs_print, &key_idx); /* TODO check for keys in query but not in exp */ printf("}"); while (1) { evhtp_kv_t * kvobj = NULL; const char * valstr = NULL; check = &exp[idx++]; if (check == NULL || check->key == NULL) { break; } kvobj = evhtp_kvs_find_kv(query, check->key); valstr = evhtp_kv_find(query, check->key); if (test_cmp(query, kvobj, valstr, check) == -1) { num_errors += 1; printf(" "); } } if (exp_error) { return -1; } return num_errors; } /* query_test */