package net.mms_projects.copy_it.api;
import java.util.List;
import net.mms_projects.copy_it.api.responses.ApiResponse;
import org.apache.http.NameValuePair;
public abstract class ApiEndpoint {
protected ServerApi api;
protected String endpoint;
private Class<? extends ApiResponse> getResponseType;
private Class<? extends ApiResponse> createResponseType;
private Class<? extends ApiResponse> updateResponseType;
private Class<? extends ApiResponse> deleteResponseType;
public ApiEndpoint(ServerApi api, String endpoint) {
this.api = api;
this.endpoint = endpoint;
}
public ApiEndpoint(ServerApi api) {
this.api = api;
}
final protected void setGetResponseType(Class<? extends ApiResponse> responseType) {
this.getResponseType = responseType;
}
final protected void setCreateResponseType(Class<? extends ApiResponse> responseType) {
this.createResponseType = responseType;
}
final protected void setUpdateResponseType(Class<? extends ApiResponse> responseType) {
this.updateResponseType = responseType;
}
final protected void setDeleteResponseType(Class<? extends ApiResponse> responseType) {
this.deleteResponseType = responseType;
}
final protected Class<? extends ApiResponse> getGetResponseType() {
return this.getResponseType;
}
final protected Class<? extends ApiResponse> getCreateResponseType() {
return this.createResponseType;
}
final protected Class<? extends ApiResponse> getUpdateResponseType() {
return this.updateResponseType;
}
final protected Class<? extends ApiResponse> getDeleteResponseType() {
return this.deleteResponseType;
}
public ApiResponse get(String id) throws Exception{
ApiResponse response = this.api.doRequest(this.getResponseType,
this.endpoint, id, "GET");
return response;
}
public ApiResponse create(String id, List<NameValuePair> parameters) throws Exception{
ApiResponse response = this.api.doRequest(this.createResponseType,
this.endpoint, id, "POST", parameters);
return response;
}
public ApiResponse update(String id, List<NameValuePair> parameters) throws Exception {
ApiResponse response = this.api.doRequest(this.updateResponseType,
this.endpoint, id, "PUT", parameters);
return response;
}
public ApiResponse delete(String id) throws Exception {
ApiResponse response = this.api.doRequest(this.deleteResponseType,
this.endpoint, id, "DELETE");
return response;
}
}