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
#include "source/extensions/http/injected_credentials/oauth2/token_provider.h"
6

            
7
namespace Envoy {
8
namespace Extensions {
9
namespace Http {
10
namespace InjectedCredentials {
11
namespace OAuth2 {
12

            
13
/**
14
 * Implementation of credential injector's interface.
15
 */
16
class OAuth2ClientCredentialTokenInjector
17
    : public Common::CredentialInjector,
18
      public Logger::Loggable<Logger::Id::credential_injector> {
19
public:
20
  OAuth2ClientCredentialTokenInjector(Common::SecretReaderConstSharedPtr token_reader)
21
34
      : token_reader_(token_reader) {};
22

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

            
25
private:
26
  Common::SecretReaderConstSharedPtr token_reader_;
27
};
28

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