package code;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;

public class ImageRes implements HttpHandler {

	@Override
	public void handle(HttpExchange exchange) throws IOException {
		String requestURI = exchange.getRequestURI().toASCIIString().replace("/secured/home/", "/");

		String requestMethod = exchange.getRequestMethod();
		if (Helper.compareText(requestMethod, "GET")) {
			BufferedImage image = getLocalImage(requestURI);
			if (image == null)
				Helper.pageNotFound(exchange);
			List<String> strlist = new ArrayList<>();
			strlist.add("image/png");
			OutputStream os = exchange.getResponseBody();
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			ImageIO.write(image, "png", baos);
			baos.flush();
			byte[] imageInByte = baos.toByteArray();
            exchange.getResponseHeaders().put("content-type", strlist);
            exchange.sendResponseHeaders(200, imageInByte.length);
			os.write(imageInByte);
			os.close();
		} else {
			Helper.methodNotAllowed(exchange);
		}
	}

	private BufferedImage getLocalImage(String uri) {
		String page = Server.CLIENT_PATH + uri;
		try {
			File f = new File(page);
			BufferedImage image = ImageIO.read(f);
			return image;
		} catch (IOException e) {
			System.out.println("Error reading file '" + page + "'");
			return null;
		}
	}

}