31 #ifndef DATA_GZIP_HPP_ 32 #define DATA_GZIP_HPP_ 34 #include <boost/iostreams/copy.hpp> 35 #include <boost/iostreams/filter/gzip.hpp> 36 #include <boost/iostreams/filtering_streambuf.hpp> 51 std::string
compress(
const std::string& content);
52 std::string
decompress(
const std::string& compressedContent);
80 inline std::string
compress(
const std::string& content) {
85 std::stringstream compressed;
86 std::stringstream origin(content);
88 boost::iostreams::filtering_streambuf<boost::iostreams::input> out;
90 out.push(boost::iostreams::gzip_compressor(boost::iostreams::gzip_params(
compressionLevel)));
93 boost::iostreams::copy(out, compressed);
96 return compressed.str();
111 inline std::string
decompress(
const std::string& compressedContent) {
112 if(compressedContent.empty()) {
116 std::stringstream compressed(compressedContent);
117 std::stringstream decompressed;
119 boost::iostreams::filtering_streambuf<boost::iostreams::input> out;
121 out.push(boost::iostreams::gzip_decompressor());
122 out.push(compressed);
124 boost::iostreams::copy(out, decompressed);
127 return decompressed.str();
Namespace for compressing and decompressing gzip.
Definition: Gzip.hpp:42
std::string decompress(const std::string &compressedContent)
Decompresses gzip-compressed content.
Definition: Gzip.hpp:111
constexpr auto compressionLevel
The compression level used when compressing with gzip.
Definition: Gzip.hpp:59
std::string compress(const std::string &content)
Compresses content using gzip.
Definition: Gzip.hpp:80