1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/config/typed_config.h"
6
#include "envoy/registry/registry.h"
7

            
8
#include "source/common/formatter/substitution_format_utility.h"
9
#include "source/common/formatter/substitution_formatter.h"
10

            
11
namespace Envoy {
12
namespace Extensions {
13
namespace Formatter {
14

            
15
class ReqWithoutQuery : public ::Envoy::Formatter::FormatterProvider {
16
public:
17
  ReqWithoutQuery(absl::string_view main_header, absl::string_view alternative_header,
18
                  absl::optional<size_t> max_length);
19

            
20
  absl::optional<std::string> format(const Envoy::Formatter::Context& context,
21
                                     const StreamInfo::StreamInfo&) const override;
22
  Protobuf::Value formatValue(const Envoy::Formatter::Context& context,
23
                              const StreamInfo::StreamInfo&) const override;
24

            
25
private:
26
  const Http::HeaderEntry* findHeader(OptRef<const Http::HeaderMap> headers) const;
27

            
28
  const Http::LowerCaseString main_header_;
29
  const Http::LowerCaseString alternative_header_;
30
  const absl::optional<size_t> max_length_;
31
};
32

            
33
class ReqWithoutQueryCommandParser : public ::Envoy::Formatter::CommandParser {
34
public:
35
8
  ReqWithoutQueryCommandParser() = default;
36
  ::Envoy::Formatter::FormatterProviderPtr parse(absl::string_view command,
37
                                                 absl::string_view subcommand,
38
                                                 absl::optional<size_t> max_length) const override;
39
};
40

            
41
} // namespace Formatter
42
} // namespace Extensions
43
} // namespace Envoy