/* * Copyright (c) 2020-2022, the SerenityOS developers. * Copyright (c) 2021, Idan Horowitz * Copyright (c) 2025, Altomani Gianluca * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Compress { class GzipDecompressor final : public GenericZlibDecompressor { public: bool is_likely_compressed(ReadonlyBytes bytes); static ErrorOr> create(MaybeOwned); static ErrorOr decompress_all(ReadonlyBytes); private: GzipDecompressor(AK::FixedArray buffer, MaybeOwned stream, z_stream* zstream) : GenericZlibDecompressor(move(buffer), move(stream), zstream) { } }; class GzipCompressor final : public GenericZlibCompressor { public: static ErrorOr> create(MaybeOwned, GenericZlibCompressionLevel = GenericZlibCompressionLevel::Default); static ErrorOr compress_all(ReadonlyBytes, GenericZlibCompressionLevel = GenericZlibCompressionLevel::Default); private: GzipCompressor(AK::FixedArray buffer, MaybeOwned stream, z_stream* zstream) : GenericZlibCompressor(move(buffer), move(stream), zstream) { } }; }