package helpers;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.Inflater;

public class HTTPHelpers {

	// Source:
	// http://qupera.blogspot.ch/2013/02/howto-compress-and-uncompress-java-byte.html
	public byte[] decompress(byte[] data, boolean gzip) throws IOException, DataFormatException {
		Inflater inflater = new Inflater(true);
		inflater.setInput(data);
	
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
		byte[] buffer = new byte[1024];
		while (!inflater.finished()) {
			int count = inflater.inflate(buffer);
			outputStream.write(buffer, 0, count);
		}
		outputStream.close();
		byte[] output = outputStream.toByteArray();
	
		inflater.end();
	
		return output;
	}

	// Source:
	// http://qupera.blogspot.ch/2013/02/howto-compress-and-uncompress-java-byte.html
	public byte[] compress(byte[] data, boolean gzip) throws IOException {
		Deflater deflater = new Deflater(5,gzip);
		deflater.setInput(data);
	
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
	
		deflater.finish();
		byte[] buffer = new byte[1024];
		while (!deflater.finished()) {
			int count = deflater.deflate(buffer);								
			outputStream.write(buffer, 0, count);
		}
		outputStream.close();
		byte[] output = outputStream.toByteArray();
	
		deflater.end();
	
		return output;
	}

	
	
}