All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kiwiproject.consul.CoordinateClient Maven / Gradle / Ivy

package org.kiwiproject.consul;

import static org.kiwiproject.consul.ConsulClients.dcQuery;

import org.kiwiproject.consul.config.ClientConfig;
import org.kiwiproject.consul.model.coordinate.Coordinate;
import org.kiwiproject.consul.model.coordinate.Datacenter;
import org.kiwiproject.consul.monitoring.ClientEventCallback;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.http.GET;
import retrofit2.http.QueryMap;

import java.util.List;
import java.util.Map;

/**
 * HTTP Client for /v1/coordinate/ endpoints.
 *
 * @see The Consul API Docs
 */
public class CoordinateClient extends BaseClient {

    private static final String CLIENT_NAME = "coordinate";

    private final Api api;

    /**
     * Constructs an instance of this class.
     *
     * @param retrofit The {@link Retrofit} to build a client from.
     */
    CoordinateClient(Retrofit retrofit, ClientConfig config, ClientEventCallback eventCallback) {
        super(CLIENT_NAME, config, eventCallback);
        this.api = retrofit.create(Api.class);
    }

    public List getDatacenters() {
        return http.extract(api.getDatacenters());
    }

    public List getNodes(String dc) {
        return http.extract(api.getNodes(dcQuery(dc)));
    }

    public List getNodes() {
        return getNodes(null);
    }

    /**
     * Retrofit API interface.
     */
    interface Api {

        @GET("coordinate/datacenters")
        Call> getDatacenters();

        @GET("coordinate/nodes")
        Call> getNodes(@QueryMap Map query);

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy