1
#pragma once
2

            
3
#include "envoy/extensions/http/injected_credentials/oauth2/v3/oauth2.pb.h"
4
#include "envoy/extensions/http/injected_credentials/oauth2/v3/oauth2.pb.validate.h"
5

            
6
#include "source/common/http/headers.h"
7
#include "source/extensions/http/injected_credentials/common/factory.h"
8
#include "source/extensions/http/injected_credentials/common/factory_base.h"
9
#include "source/extensions/http/injected_credentials/oauth2/client_credentials_impl.h"
10

            
11
namespace Envoy {
12
namespace Extensions {
13
namespace Http {
14
namespace InjectedCredentials {
15
namespace OAuth2 {
16

            
17
using envoy::extensions::http::injected_credentials::oauth2::v3::OAuth2;
18

            
19
class OAuth2CredentialInjectorFactory : public Common::CredentialInjectorFactoryBase<OAuth2> {
20
public:
21
  OAuth2CredentialInjectorFactory()
22
7
      : CredentialInjectorFactoryBase("envoy.http.injected_credentials.oauth2") {}
23
  Common::CredentialInjectorSharedPtr
24
  createOauth2ClientCredentialInjector(const OAuth2& proto_config, const std::string& stats_prefix,
25
                                       Server::Configuration::ServerFactoryContext& context,
26
                                       Init::Manager& init_manager);
27
  Common::CredentialInjectorSharedPtr
28
  createCredentialInjectorFromProtoTyped(const OAuth2& config, const std::string& stats_prefix,
29
                                         Server::Configuration::ServerFactoryContext& context,
30
                                         Init::Manager& init_manager) override;
31
};
32

            
33
DECLARE_FACTORY(OAuth2CredentialInjectorFactory);
34

            
35
} // namespace OAuth2
36
} // namespace InjectedCredentials
37
} // namespace Http
38
} // namespace Extensions
39
} // namespace Envoy