package com.owlmaddie.utils;

import java.io.ByteArrayOutputStream;
import java.util.zip.Deflater;

/**
 * The {@code Compression} class is used to compress a JSON string and return a byte array.
 */
public class Compression {

    public static byte[] compressString(String data) {
        try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length())) {
            Deflater deflater = new Deflater();
            deflater.setInput(data.getBytes());
            deflater.finish();

            byte[] buffer = new byte[1024];
            while (!deflater.finished()) {
                int count = deflater.deflate(buffer); // Returns the generated code... index
                outputStream.write(buffer, 0, count);
            }
            deflater.end();
            return outputStream.toByteArray();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}