Пример #1
0
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;	
}
Пример #2
0
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 */