Current File : /var/www/prestashop/modules/ps_eventbus/src/Service/CompressionService.php
<?php

namespace PrestaShop\Module\PsEventbus\Service;

use PrestaShop\Module\PsEventbus\Formatter\JsonFormatter;

class CompressionService
{
    /**
     * @var JsonFormatter
     */
    private $jsonFormatter;

    public function __construct(JsonFormatter $jsonFormatter)
    {
        $this->jsonFormatter = $jsonFormatter;
    }

    /**
     * Compresses data with gzip
     *
     * @param array<mixed> $data
     *
     * @return string
     *
     * @@throws \Exception
     */
    public function gzipCompressData($data)
    {
        if (!extension_loaded('zlib')) {
            throw new \Exception('Zlib extension for PHP is not enabled');
        }

        $dataJson = $this->jsonFormatter->formatNewlineJsonString($data);

        if (!$encodedData = gzencode($dataJson)) {
            throw new \Exception('Failed encoding data to GZIP');
        }

        return $encodedData;
    }
}