diff --git a/api/envoy/config/filter/network/direct_response/v2/BUILD b/api/envoy/config/filter/network/direct_response/v2/BUILD index ef3541ebcb1df..69168ad0cf246 100644 --- a/api/envoy/config/filter/network/direct_response/v2/BUILD +++ b/api/envoy/config/filter/network/direct_response/v2/BUILD @@ -5,5 +5,8 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") licenses(["notice"]) # Apache 2 api_proto_package( - deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], + deps = [ + "//envoy/api/v2/core:pkg", + "@com_github_cncf_udpa//udpa/annotations:pkg", + ], ) diff --git a/api/envoy/config/filter/network/direct_response/v2/config.proto b/api/envoy/config/filter/network/direct_response/v2/config.proto index 8c9f9e73fb7ac..758145d6480f2 100644 --- a/api/envoy/config/filter/network/direct_response/v2/config.proto +++ b/api/envoy/config/filter/network/direct_response/v2/config.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package envoy.config.filter.network.direct_response.v2; +import "envoy/api/v2/core/base.proto"; + import "udpa/annotations/migrate.proto"; option java_package = "io.envoyproxy.envoy.config.filter.network.direct_response.v2"; @@ -15,6 +17,6 @@ option (udpa.annotations.file_migrate).move_to_package = // [#extension: envoy.filters.network.direct_response] message Config { - // Response data as bytes. - bytes response = 1; + // Response data as a data source. + api.v2.core.DataSource response = 1; } diff --git a/api/envoy/extensions/filters/network/direct_response/v3/BUILD b/api/envoy/extensions/filters/network/direct_response/v3/BUILD index 7b429137a17af..b1fbfee7abe78 100644 --- a/api/envoy/extensions/filters/network/direct_response/v3/BUILD +++ b/api/envoy/extensions/filters/network/direct_response/v3/BUILD @@ -6,6 +6,7 @@ licenses(["notice"]) # Apache 2 api_proto_package( deps = [ + "//envoy/config/core/v3:pkg", "//envoy/config/filter/network/direct_response/v2:pkg", "@com_github_cncf_udpa//udpa/annotations:pkg", ], diff --git a/api/envoy/extensions/filters/network/direct_response/v3/config.proto b/api/envoy/extensions/filters/network/direct_response/v3/config.proto index be84035e04404..fba1384f3c433 100644 --- a/api/envoy/extensions/filters/network/direct_response/v3/config.proto +++ b/api/envoy/extensions/filters/network/direct_response/v3/config.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package envoy.extensions.filters.network.direct_response.v3; +import "envoy/config/core/v3/base.proto"; + import "udpa/annotations/versioning.proto"; option java_package = "io.envoyproxy.envoy.extensions.filters.network.direct_response.v3"; @@ -16,6 +18,6 @@ message Config { option (udpa.annotations.versioning).previous_message_type = "envoy.config.filter.network.direct_response.v2.Config"; - // Response data as bytes. - bytes response = 1; + // Response data as a data source. + config.core.v3.DataSource response = 1; } diff --git a/generated_api_shadow/envoy/config/filter/network/direct_response/v2/BUILD b/generated_api_shadow/envoy/config/filter/network/direct_response/v2/BUILD index ef3541ebcb1df..69168ad0cf246 100644 --- a/generated_api_shadow/envoy/config/filter/network/direct_response/v2/BUILD +++ b/generated_api_shadow/envoy/config/filter/network/direct_response/v2/BUILD @@ -5,5 +5,8 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") licenses(["notice"]) # Apache 2 api_proto_package( - deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], + deps = [ + "//envoy/api/v2/core:pkg", + "@com_github_cncf_udpa//udpa/annotations:pkg", + ], ) diff --git a/generated_api_shadow/envoy/config/filter/network/direct_response/v2/config.proto b/generated_api_shadow/envoy/config/filter/network/direct_response/v2/config.proto index 8c9f9e73fb7ac..758145d6480f2 100644 --- a/generated_api_shadow/envoy/config/filter/network/direct_response/v2/config.proto +++ b/generated_api_shadow/envoy/config/filter/network/direct_response/v2/config.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package envoy.config.filter.network.direct_response.v2; +import "envoy/api/v2/core/base.proto"; + import "udpa/annotations/migrate.proto"; option java_package = "io.envoyproxy.envoy.config.filter.network.direct_response.v2"; @@ -15,6 +17,6 @@ option (udpa.annotations.file_migrate).move_to_package = // [#extension: envoy.filters.network.direct_response] message Config { - // Response data as bytes. - bytes response = 1; + // Response data as a data source. + api.v2.core.DataSource response = 1; } diff --git a/generated_api_shadow/envoy/extensions/filters/network/direct_response/v3/BUILD b/generated_api_shadow/envoy/extensions/filters/network/direct_response/v3/BUILD index 7b429137a17af..b1fbfee7abe78 100644 --- a/generated_api_shadow/envoy/extensions/filters/network/direct_response/v3/BUILD +++ b/generated_api_shadow/envoy/extensions/filters/network/direct_response/v3/BUILD @@ -6,6 +6,7 @@ licenses(["notice"]) # Apache 2 api_proto_package( deps = [ + "//envoy/config/core/v3:pkg", "//envoy/config/filter/network/direct_response/v2:pkg", "@com_github_cncf_udpa//udpa/annotations:pkg", ], diff --git a/generated_api_shadow/envoy/extensions/filters/network/direct_response/v3/config.proto b/generated_api_shadow/envoy/extensions/filters/network/direct_response/v3/config.proto index be84035e04404..fba1384f3c433 100644 --- a/generated_api_shadow/envoy/extensions/filters/network/direct_response/v3/config.proto +++ b/generated_api_shadow/envoy/extensions/filters/network/direct_response/v3/config.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package envoy.extensions.filters.network.direct_response.v3; +import "envoy/config/core/v3/base.proto"; + import "udpa/annotations/versioning.proto"; option java_package = "io.envoyproxy.envoy.extensions.filters.network.direct_response.v3"; @@ -16,6 +18,6 @@ message Config { option (udpa.annotations.versioning).previous_message_type = "envoy.config.filter.network.direct_response.v2.Config"; - // Response data as bytes. - bytes response = 1; + // Response data as a data source. + config.core.v3.DataSource response = 1; } diff --git a/source/extensions/filters/network/direct_response/BUILD b/source/extensions/filters/network/direct_response/BUILD index 7a3fccd1278cf..e5037679e9003 100644 --- a/source/extensions/filters/network/direct_response/BUILD +++ b/source/extensions/filters/network/direct_response/BUILD @@ -33,6 +33,7 @@ envoy_cc_extension( ":filter", "//include/envoy/registry", "//include/envoy/server:filter_config_interface", + "//source/common/config:datasource_lib", "//source/extensions/filters/network:well_known_names", "//source/extensions/filters/network/common:factory_base_lib", "@envoy_api//envoy/extensions/filters/network/direct_response/v3:pkg_cc_proto", diff --git a/source/extensions/filters/network/direct_response/config.cc b/source/extensions/filters/network/direct_response/config.cc index ea9369aaf2d0d..1e8691234404a 100644 --- a/source/extensions/filters/network/direct_response/config.cc +++ b/source/extensions/filters/network/direct_response/config.cc @@ -3,6 +3,8 @@ #include "envoy/registry/registry.h" #include "envoy/server/filter_config.h" +#include "common/config/datasource.h" + #include "extensions/filters/network/common/factory_base.h" #include "extensions/filters/network/direct_response/filter.h" #include "extensions/filters/network/well_known_names.h" @@ -23,9 +25,10 @@ class DirectResponseConfigFactory private: Network::FilterFactoryCb createFilterFactoryFromProtoTyped( const envoy::extensions::filters::network::direct_response::v3::Config& config, - Server::Configuration::FactoryContext&) override { - return [config](Network::FilterManager& filter_manager) -> void { - filter_manager.addReadFilter(std::make_shared(config.response())); + Server::Configuration::FactoryContext& context) override { + return [config, &context](Network::FilterManager& filter_manager) -> void { + auto content = Config::DataSource::read(config.response(), true, context.api()); + filter_manager.addReadFilter(std::make_shared(content)); }; } diff --git a/test/extensions/filters/network/direct_response/direct_response_integration_test.cc b/test/extensions/filters/network/direct_response/direct_response_integration_test.cc index cd776849b82a8..919f1490e8459 100644 --- a/test/extensions/filters/network/direct_response/direct_response_integration_test.cc +++ b/test/extensions/filters/network/direct_response/direct_response_integration_test.cc @@ -16,7 +16,8 @@ class DirectResponseIntegrationTest : public testing::TestWithParam