mx.emite.sdk.clientes.ClienteJson Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ef-sdk-java Show documentation
Show all versions of ef-sdk-java Show documentation
Este kit de consumo provee a los integradores de Apis de Java para construir software que consuma los diferentes servicios web publicados por Emite Facturacion
The newest version!
package mx.emite.sdk.clientes;
import java.util.Collections;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import mx.emite.sdk.enums.Ambiente;
import mx.emite.sdk.errores.ApiException;
import mx.emite.sdk.errores.I_Api_Errores;
@Slf4j
@Getter
public class ClienteJson {
private final Ambiente ambiente;
private final ClienteHttp http;
private final Mapeador mapeador = new Mapeador();
public ClienteJson(final Ambiente ambiente){
this.ambiente=ambiente;
this.http=new ClienteHttp();
log.debug("cliente emite creado "+ambiente.name());
}
public T get(final String ruta, final Class clazz) throws ApiException{
final RespuestaHttp response = http.get(ruta);
this.errores(response);
return mapeador.deserializa(response, clazz);
}
public T post(final String ruta,Object objeto, final Class clazz) throws ApiException{
final RespuestaHttp response = http.post(ruta,mapeador.serializa(objeto));
this.errores(response);
return mapeador.deserializa(response, clazz);
}
private void errores(final RespuestaHttp response) throws ApiException {
if (response.getStatusCode() >= 300) {
if (response.isJson()) {
ApiException error = mapeador.deserializa(response.getBody(),ApiException.class);
error.setMensajes(Collections.singletonList(response.getBody()));
throw error;
} else {
log.error("La respuesta no es Json. Code: {}, body: {} ", response.getStatusCode(), response.getBody());
ApiException error = new ApiException(I_Api_Errores.PROCESANDO_RESPUESTA,
"["
+ response.getStatusCode() + "] Internal server error");
error.setMensajes(Collections.singletonList(response.getBody()));
throw error;
}
}
}
}