package com.bazaarvoice.auth.hmac.sample.client;
import com.bazaarvoice.auth.hmac.client.HmacClientFilter;
import com.bazaarvoice.auth.hmac.sample.Pizza;
import com.sun.jersey.api.client.Client;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import java.net.URI;
/**
* This is a Java SDK for the Pizza API. It uses jersey-hmac-auth to build requests such that they can be
* authenticated by the API.
*/
public class PizzaClient {
private final UriBuilder uriBuilder;
private final Client jerseyClient;
public PizzaClient(URI serviceUrl, String apiKey, String secretKey) {
this.uriBuilder = UriBuilder.fromUri(serviceUrl);
this.jerseyClient = createClient(apiKey, secretKey);
}
public Pizza getPizza() {
URI uri = uriBuilder.clone()
.segment("pizza")
.build();
return jerseyClient.resource(uri)
.accept(MediaType.APPLICATION_JSON_TYPE)
.get(Pizza.class);
}
private static Client createClient(String apiKey, String secretKey) {
Client client = Client.create();
client.addFilter(new HmacClientFilter(apiKey, secretKey, client.getMessageBodyWorkers()));
return client;
}
}