Lines
100 %
Functions
#pragma once
#include "envoy/compression/decompressor/config.h"
#include "envoy/extensions/compression/gzip/decompressor/v3/gzip.pb.h"
#include "envoy/extensions/compression/gzip/decompressor/v3/gzip.pb.validate.h"
#include "source/common/http/headers.h"
#include "source/extensions/compression/common/decompressor/factory_base.h"
#include "source/extensions/compression/gzip/decompressor/zlib_decompressor_impl.h"
namespace Envoy {
namespace Extensions {
namespace Compression {
namespace Gzip {
namespace Decompressor {
namespace {
const std::string& gzipStatsPrefix() { CONSTRUCT_ON_FIRST_USE(std::string, "gzip."); }
const std::string& gzipExtensionName() {
CONSTRUCT_ON_FIRST_USE(std::string, "envoy.compression.gzip.decompressor");
}
} // namespace
class GzipDecompressorFactory : public Envoy::Compression::Decompressor::DecompressorFactory {
public:
GzipDecompressorFactory(const envoy::extensions::compression::gzip::decompressor::v3::Gzip& gzip,
Stats::Scope& scope);
// Envoy::Compression::Decompressor::DecompressorFactory
Envoy::Compression::Decompressor::DecompressorPtr
createDecompressor(const std::string& stats_prefix) override;
const std::string& statsPrefix() const override { return gzipStatsPrefix(); }
const std::string& contentEncoding() const override {
return Http::CustomHeaders::get().ContentEncodingValues.Gzip;
private:
Stats::Scope& scope_;
const int32_t window_bits_;
const uint32_t chunk_size_;
const uint64_t max_inflate_ratio_;
};
class GzipDecompressorLibraryFactory
: public Compression::Common::Decompressor::DecompressorLibraryFactoryBase<
envoy::extensions::compression::gzip::decompressor::v3::Gzip> {
GzipDecompressorLibraryFactory() : DecompressorLibraryFactoryBase(gzipExtensionName()) {}
Envoy::Compression::Decompressor::DecompressorFactoryPtr createDecompressorFactoryFromProtoTyped(
const envoy::extensions::compression::gzip::decompressor::v3::Gzip& proto_config,
Server::Configuration::FactoryContext& context) override;
DECLARE_FACTORY(GzipDecompressorLibraryFactory);
} // namespace Decompressor
} // namespace Gzip
} // namespace Compression
} // namespace Extensions
} // namespace Envoy