LCOV - code coverage report
Current view: top level - source/extensions/compression/gzip/decompressor - config.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 4 9 44.4 %
Date: 2024-01-05 06:35:25 Functions: 2 5 40.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/compression/decompressor/config.h"
       4             : #include "envoy/extensions/compression/gzip/decompressor/v3/gzip.pb.h"
       5             : #include "envoy/extensions/compression/gzip/decompressor/v3/gzip.pb.validate.h"
       6             : 
       7             : #include "source/common/http/headers.h"
       8             : #include "source/extensions/compression/common/decompressor/factory_base.h"
       9             : #include "source/extensions/compression/gzip/decompressor/zlib_decompressor_impl.h"
      10             : 
      11             : namespace Envoy {
      12             : namespace Extensions {
      13             : namespace Compression {
      14             : namespace Gzip {
      15             : namespace Decompressor {
      16             : 
      17             : namespace {
      18           0 : const std::string& gzipStatsPrefix() { CONSTRUCT_ON_FIRST_USE(std::string, "gzip."); }
      19           2 : const std::string& gzipExtensionName() {
      20           2 :   CONSTRUCT_ON_FIRST_USE(std::string, "envoy.compression.gzip.decompressor");
      21           2 : }
      22             : 
      23             : } // namespace
      24             : 
      25             : class GzipDecompressorFactory : public Envoy::Compression::Decompressor::DecompressorFactory {
      26             : public:
      27             :   GzipDecompressorFactory(const envoy::extensions::compression::gzip::decompressor::v3::Gzip& gzip,
      28             :                           Stats::Scope& scope);
      29             : 
      30             :   // Envoy::Compression::Decompressor::DecompressorFactory
      31             :   Envoy::Compression::Decompressor::DecompressorPtr
      32             :   createDecompressor(const std::string& stats_prefix) override;
      33           0 :   const std::string& statsPrefix() const override { return gzipStatsPrefix(); }
      34           0 :   const std::string& contentEncoding() const override {
      35           0 :     return Http::CustomHeaders::get().ContentEncodingValues.Gzip;
      36           0 :   }
      37             : 
      38             : private:
      39             :   Stats::Scope& scope_;
      40             :   const int32_t window_bits_;
      41             :   const uint32_t chunk_size_;
      42             :   const uint64_t max_inflate_ratio_;
      43             : };
      44             : 
      45             : class GzipDecompressorLibraryFactory
      46             :     : public Compression::Common::Decompressor::DecompressorLibraryFactoryBase<
      47             :           envoy::extensions::compression::gzip::decompressor::v3::Gzip> {
      48             : public:
      49           2 :   GzipDecompressorLibraryFactory() : DecompressorLibraryFactoryBase(gzipExtensionName()) {}
      50             : 
      51             : private:
      52             :   Envoy::Compression::Decompressor::DecompressorFactoryPtr createDecompressorFactoryFromProtoTyped(
      53             :       const envoy::extensions::compression::gzip::decompressor::v3::Gzip& proto_config,
      54             :       Server::Configuration::FactoryContext& context) override;
      55             : };
      56             : 
      57             : DECLARE_FACTORY(GzipDecompressorLibraryFactory);
      58             : 
      59             : } // namespace Decompressor
      60             : } // namespace Gzip
      61             : } // namespace Compression
      62             : } // namespace Extensions
      63             : } // namespace Envoy

Generated by: LCOV version 1.15