1
#pragma once
2

            
3
#include "source/extensions/http/injected_credentials/common/credential.h"
4
#include "source/extensions/http/injected_credentials/common/secret_reader.h"
5

            
6
namespace Envoy {
7
namespace Extensions {
8
namespace Http {
9
namespace InjectedCredentials {
10
namespace Generic {
11

            
12
/**
13
 * Implementation of credential injector's interface.
14
 */
15
class GenericCredentialInjector : public Common::CredentialInjector {
16
public:
17
  GenericCredentialInjector(const std::string& header, const std::string& header_value_prefix,
18
                            Common::SecretReaderConstSharedPtr secret_reader)
19
56
      : header_(header), header_value_prefix_(header_value_prefix), secret_reader_(secret_reader) {}
20

            
21
  absl::Status inject(Envoy::Http::RequestHeaderMap& headers, bool overwrite) override;
22

            
23
private:
24
  const Envoy::Http::LowerCaseString header_;
25
  const std::string header_value_prefix_;
26
  const Common::SecretReaderConstSharedPtr secret_reader_;
27
};
28

            
29
} // namespace Generic
30
} // namespace InjectedCredentials
31
} // namespace Http
32
} // namespace Extensions
33
} // namespace Envoy