159 lines
5.6 KiB
Plaintext
Executable File
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;
|
|
}
|
|
|
|
}
|