mesosphere.marathon.client.MarathonClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of marathon-client Show documentation
Show all versions of marathon-client Show documentation
A Java API client for Mesosphere's Marathon.
package mesosphere.marathon.client;
import mesosphere.marathon.client.utils.MarathonException;
import mesosphere.marathon.client.utils.ModelUtils;
import feign.Feign;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import feign.Response;
import feign.codec.ErrorDecoder;
import feign.gson.GsonDecoder;
import feign.gson.GsonEncoder;
public class MarathonClient {
static class MarathonHeadersInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
template.header("Accept", "application/json");
template.header("Content-Type", "application/json");
}
}
static class MarathonErrorDecoder implements ErrorDecoder {
@Override
public Exception decode(String methodKey, Response response) {
return new MarathonException(response.status(), response.reason());
}
}
public static Marathon getInstance(String endpoint) {
GsonDecoder decoder = new GsonDecoder(ModelUtils.GSON);
GsonEncoder encoder = new GsonEncoder(ModelUtils.GSON);
return Feign.builder().encoder(encoder).decoder(decoder)
.errorDecoder(new MarathonErrorDecoder())
.requestInterceptor(new MarathonHeadersInterceptor())
.target(Marathon.class, endpoint);
}
}