Line data Source code
1 : #pragma once 2 : 3 : #include <memory> 4 : 5 : #include "envoy/extensions/early_data/v3/default_early_data_policy.pb.h" 6 : #include "envoy/registry/registry.h" 7 : #include "envoy/router/router.h" 8 : 9 : namespace Envoy { 10 : namespace Router { 11 : 12 : // The default behavior is either disallowing any early data request or allowing safe request over 13 : // early data based on allow_safe_request. 14 : class DefaultEarlyDataPolicy : public EarlyDataPolicy { 15 : public: 16 : explicit DefaultEarlyDataPolicy(bool allow_safe_request) 17 1711 : : allow_safe_request_(allow_safe_request) {} 18 : 19 : bool allowsEarlyDataForRequest(const Http::RequestHeaderMap& request_headers) const override; 20 : 21 : private: 22 : bool allow_safe_request_; 23 : }; 24 : 25 : class DefaultEarlyDataPolicyFactory : public EarlyDataPolicyFactory { 26 : public: 27 190 : std::string name() const override { return "envoy.route.early_data_policy.default"; } 28 : 29 0 : EarlyDataPolicyPtr createEarlyDataPolicy(const Protobuf::Message& /*config*/) override { 30 0 : return std::make_unique<DefaultEarlyDataPolicy>( 31 0 : /*allow_safe_request=*/false); 32 0 : } 33 : 34 12 : ProtobufTypes::MessagePtr createEmptyConfigProto() override { 35 12 : return std::make_unique<envoy::extensions::early_data::v3::DefaultEarlyDataPolicy>(); 36 12 : } 37 : }; 38 : 39 : DECLARE_FACTORY(DefaultEarlyDataPolicyFactory); 40 : 41 : } // namespace Router 42 : } // namespace Envoy