package com.geored.servicios.impl;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import negocios.GestionUsuarios;
import persistencia.Imagen;
import com.geored.servicios.ServicioImagenes;
import com.geored.servicios.impl.auth.GestionTokens;
import com.geored.servicios.impl.util.DataUploadForm;
import com.geored.servicios.json.ImagenJSON;
@Local
@Stateless
public class ImplServicioImagenes implements ServicioImagenes {
@EJB
GestionUsuarios gestionUsuarios;
@EJB
GestionTokens gestionTokens;
@Override
public Response bajarImagen(final String userToken, final HttpServletResponse response, final Integer idImagen) {
if (gestionTokens.validarToken(userToken)) {
Imagen imagen = gestionUsuarios.obtenerImagen(idImagen);
ResponseBuilder responseImage = Response.ok(imagen.getImagen());
return responseImage.build();
}
else {
response.setStatus(Response.Status.UNAUTHORIZED.getStatusCode());
}
return null;
}
@Override
public ImagenJSON subirImagen(final String userToken, final HttpServletResponse response,
final HttpServletRequest request, final DataUploadForm uploadForm) {
try {
InputStream input = uploadForm.getPayload();
ByteArrayOutputStream bufferFinal = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
while (input.read(buffer) > 0) {
bufferFinal.write(buffer);
}
Imagen imagen = new Imagen();
imagen.setImagen(bufferFinal.toByteArray());
Integer idImagen = gestionUsuarios.altaImagen(imagen);
ImagenJSON imagenJSON = new ImagenJSON();
imagenJSON.setId(idImagen);
response.setStatus(Response.Status.OK.getStatusCode());
return imagenJSON;
}
catch (Exception e) {
response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode());
}
return null;
}
}