package com.intrbiz.bergamot; import java.io.IOException; import org.apache.http.Header; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.fluent.Request; import org.apache.http.client.fluent.Response; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicNameValuePair; import com.intrbiz.bergamot.io.BergamotTranscoder; public abstract class BergamotAPICall<T> { private BaseBergamotClient client; public BergamotAPICall(BaseBergamotClient client) { this.client = client; } protected BaseBergamotClient client() { return this.client; } protected BergamotTranscoder transcoder() { return this.client.transcoder(); } protected String url(String... urlElements) { return this.client.url(urlElements); } protected String appendQuery(String url, NameValuePair... parameters) { return this.client.appendQuery(url, parameters); } protected String appendQuery(String url, Iterable<NameValuePair> parameters) { return this.client.appendQuery(url, parameters); } protected String authToken() { return this.client.getAuthToken().getToken(); } protected Header authHeader() { return new BasicHeader("X-Bergamot-Auth", this.authToken()); } protected NameValuePair param(String name, String value) { return new BasicNameValuePair(name, value); } protected NameValuePair param(String name, Object value) { return new BasicNameValuePair(name, String.valueOf(value)); } protected Response execute(Request request) throws ClientProtocolException, IOException { return this.client.executor().execute(request); } protected Request get(String url) { return Request.Get(url); } protected Request post(String url) { return Request.Post(url); } protected Request put(String url) { return Request.Put(url); } protected Request delte(String url) { return Request.Delete(url); } /** * Execute this call */ public abstract T execute() throws BergamotAPIException; }