maia_modificado/.svn/pristine/9d/9d8d65288a8f33928908f9b9646...

159 lines
5.6 KiB
Plaintext
Executable File

/**
*
*/
package com.fp.alfresco.util;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import com.fp.alfresco.auth.AlfrescoFileAuth;
import com.fp.alfresco.auth.Authentication;
import com.fp.alfresco.enums.EnumRequestType;
import com.fp.alfresco.exception.ExceptionWebscript;
/**
*
* Clase que gestiona las peticiones realizadas en el API de Alfresco
* @author bpt
*
*/
public class ApiRequest {
private String uriBase = ApiProperties.getProperty("api.uri.base");
private CloseableHttpClient client = HttpClients.createDefault();
private Authentication auth = new AlfrescoFileAuth();
/**
* Retorna una respuesta a una petición REST simple
* @param requestType tipo de petición
* @param uri URI
* @return respuesta a la petición REST
* @throws Exception
*/
public String simpleRequest(EnumRequestType requestType, String uri) throws Exception{
HttpRequestBase httpRequest;
uri = this.uriBase+uri;
if(requestType==EnumRequestType.GET){
httpRequest = new HttpGet(uri);
}else{
httpRequest = new HttpPost(uri);
}
ApiResponseHandler handler = new ApiResponseHandler();
CloseableHttpResponse response = this.client.execute(httpRequest);
return handler.handleResponse(response);
}
/**
* Método de autenticación de acceso al repositorio de Alfresco
* @param requestType tipo de petición
* @param uri URI de la petición
* @param isOnlyTicket si es solo ticket
* @param entity objeto en la request
* @param isGetEntityContent retorna contenido en la petición REST
* @return un objeto con la respuesta a la autenticació
* @throws Exception
*/
private Object authRequest(EnumRequestType requestType, String uri, boolean isOnlyTicket, HttpEntity entity, boolean isGetEntityContent) throws Exception{
uri = this.uriBase+uri;
if(this.auth.authenticate()){
if(isOnlyTicket) {
uri+= "?alf_ticket=" + this.auth.getTicket();
}else{
uri+= "&alf_ticket=" + this.auth.getTicket();
}
HttpRequestBase httpRequest;
if(requestType==EnumRequestType.GET){
httpRequest = new HttpGet(uri);
}else if(requestType==EnumRequestType.POST){
httpRequest = new HttpPost(uri);
if(entity!=null){
((HttpPost)httpRequest).setEntity(entity);
}
}else {
httpRequest = new HttpDelete(uri);
}
ApiResponseHandler handler = new ApiResponseHandler();
CloseableHttpResponse response = this.client.execute(httpRequest);
// try {
return handler.handleResponse(response, isGetEntityContent);
// }finally {
//response.close();
// }
}else{
throw new ExceptionWebscript("Error al autenticar con alfresco");
}
}
/**
* Método de autenticación de acceso al repositorio de Alfresco
* @param requestType tipo de petición
* @param uri URI de la petición
* @return un objeto con la respuesta a la autenticació
* @throws Exception
*/
public Object authRequest(EnumRequestType requestType, String uri) throws Exception{
return this.authRequest(requestType, uri, false, null, false);
}
/**
* Método de autenticación de acceso al repositorio de Alfresco
* @param requestType tipo de petición
* @param uri URI de la petición
* @param entity objeto en la request
* @return un objeto con la respuesta a la autenticació
* @throws Exception
*/
public Object authRequest(EnumRequestType requestType, String uri, HttpEntity entity) throws Exception{
return this.authRequest(requestType, uri, false, entity, false);
}
/**
* Método de autenticación de acceso al repositorio de Alfresco
* @param requestType tipo de petición
* @param uri URI de la petición
* @param isGetEntityContent retorna contenido en la petición REST
* @return un objeto con la respuesta a la autenticació
* @throws Exception
*/
public Object authRequest(EnumRequestType requestType, String uri, boolean isGetEntityContent) throws Exception{
return this.authRequest(requestType, uri, false, null, isGetEntityContent);
}
/**
* Método de autenticación de acceso al repositorio de Alfresco
* @param requestType tipo de petición
* @param uri URI de la petición
* @param isGetEntityContent retorna contenido en la petición REST
* @param isOnlyTicket si es solo ticket
* @return un objeto con la respuesta a la autenticació
* @throws Exception
*/
public Object authRequest(EnumRequestType requestType, String uri, boolean isGetEntityContent, boolean includeTicket) throws Exception{
return this.authRequest(requestType, uri, includeTicket, null, isGetEntityContent);
}
/**
* @return Retorna el atributo auth
*/
public Authentication getAuth() {
return this.auth;
}
/**
* @param auth Parámetro a fijar en el atributo auth
*/
public void setAuth(Authentication auth) {
this.auth = auth;
}
}