Exemplo n.º 1
0
int ConsulRestClient::get( const std::string & url, std::string & ret ) {
    int code = 200;
    char * r = rest_get( url.c_str(), &code );
    if( r == nullptr ) {
        return code;
    }
    ret = r;
    return 0;
}
Exemplo n.º 2
0
static void connection_apply_handler(int err, const struct http_msg *msg,
				     struct mbuf *mb,
				     struct json_object *jobj, void *arg)
{
	struct connection_apply_data *data = arg;
	int count, i;
	struct zapi_connection conn;

	err = rest_err(err, msg);
	if (err)
		goto out;

	if (!jzon_is_array(jobj)) {
		err = EPROTO;
		goto out;
	}

	conn.to = NULL;
	count = json_object_array_length(jobj);
	for (i = 0; i < count; ++i) {
		struct json_object *jitem;

		jitem = json_object_array_get_idx(jobj, i);
		if (!jitem)
			continue;

		err = zapi_connection_decode(jitem, &conn);
		if (err)
			goto out;

		if (data->connh(0, &conn, data->arg)) {
			err = ENOENT;
			goto out;
		}
	}

	if (conn.to) {
		err = rest_get(NULL, data->cli, data->pri,
			       connection_apply_handler, data,
			       "/connections?start=%s", conn.to);
		if (err)
			goto out;
	}

 out:
	if (err) {
		if (err != ENOENT)
			data->connh(err, NULL, data->arg);
		mem_deref(data);
	}
}
Exemplo n.º 3
0
int zapi_connection_apply(struct rest_cli *cli, int pri,
			  zapi_connection_h *connh, void *arg)
{
	struct connection_apply_data *data;
	int err;

	data = mem_zalloc(sizeof(*data), NULL);
	if (!data)
		return ENOMEM;

	data->cli = cli;
	data->pri = pri;
	data->connh = connh;
	data->arg = arg;

	err = rest_get(NULL, cli, pri, connection_apply_handler, data,
		       "/connections");
	if (err)
		mem_deref(data);
	return err;
}