@@ -16,20 +16,21 @@ import (
1616
1717func init () {
1818 sdk .RegisterHttpFilterConfigFactories (map [string ]shared.HttpFilterConfigFactory {
19- "passthrough" : & PassthroughConfigFactory {},
20- "header_callbacks" : & HeaderCallbacksConfigFactory {},
21- "per_route_config" : & PerRouteConfigFactory {},
22- "body_callbacks" : & BodyCallbacksConfigFactory {},
23- "http_callouts" : & HttpCalloutsConfigFactory {},
24- "send_response" : & SendResponseConfigFactory {},
25- "http_filter_scheduler" : & HttpFilterSchedulerConfigFactory {},
26- "fake_external_cache" : & FakeExternalCacheConfigFactory {},
27- "stats_callbacks" : & StatsCallbacksConfigFactory {},
28- "streaming_terminal_filter" : & StreamingTerminalConfigFactory {},
29- "http_stream_basic" : & HttpStreamBasicConfigFactory {},
30- "http_stream_bidirectional" : & HttpStreamBidirectionalConfigFactory {},
31- "upstream_reset" : & UpstreamResetConfigFactory {},
32- "http_config_scheduler" : & ConfigSchedulerConfigFactory {},
19+ "passthrough" : & PassthroughConfigFactory {},
20+ "header_callbacks" : & HeaderCallbacksConfigFactory {},
21+ "header_callbacks_on_creation" : & HeaderCallbacksOnCreationConfigFactory {},
22+ "per_route_config" : & PerRouteConfigFactory {},
23+ "body_callbacks" : & BodyCallbacksConfigFactory {},
24+ "http_callouts" : & HttpCalloutsConfigFactory {},
25+ "send_response" : & SendResponseConfigFactory {},
26+ "http_filter_scheduler" : & HttpFilterSchedulerConfigFactory {},
27+ "fake_external_cache" : & FakeExternalCacheConfigFactory {},
28+ "stats_callbacks" : & StatsCallbacksConfigFactory {},
29+ "streaming_terminal_filter" : & StreamingTerminalConfigFactory {},
30+ "http_stream_basic" : & HttpStreamBasicConfigFactory {},
31+ "http_stream_bidirectional" : & HttpStreamBidirectionalConfigFactory {},
32+ "upstream_reset" : & UpstreamResetConfigFactory {},
33+ "http_config_scheduler" : & ConfigSchedulerConfigFactory {},
3334 })
3435}
3536
@@ -178,6 +179,40 @@ type HeaderCallbacksFilter struct {
178179 resTrailersCalled bool
179180}
180181
182+ type HeaderCallbacksOnCreationConfigFactory struct {
183+ shared.EmptyHttpFilterConfigFactory
184+ }
185+
186+ func (f * HeaderCallbacksOnCreationConfigFactory ) Create (handle shared.HttpFilterConfigHandle ,
187+ config []byte ) (shared.HttpFilterFactory , error ) {
188+ headersToAdd := make (map [string ]string )
189+ str := string (config )
190+ parts := strings .Split (str , "," )
191+ for _ , part := range parts {
192+ kv := strings .Split (part , ":" )
193+ if len (kv ) == 2 {
194+ headersToAdd [kv [0 ]] = kv [1 ]
195+ }
196+ }
197+ return & HeaderCallbacksOnCreationFilterFactory {headersToAdd : headersToAdd }, nil
198+ }
199+
200+ type HeaderCallbacksOnCreationFilterFactory struct {
201+ shared.EmptyHttpFilterFactory
202+ headersToAdd map [string ]string
203+ }
204+
205+ func (f * HeaderCallbacksOnCreationFilterFactory ) Create (handle shared.HttpFilterHandle ) shared.HttpFilter {
206+ for k , v := range f .headersToAdd {
207+ handle .RequestHeaders ().Set (k , v )
208+ }
209+ return & HeaderCallbacksOnCreationFilter {}
210+ }
211+
212+ type HeaderCallbacksOnCreationFilter struct {
213+ shared.EmptyHttpFilter
214+ }
215+
181216func assert (cond bool , msg string ) {
182217 if ! cond {
183218 panic ("assertion failed: " + msg )
0 commit comments