@@ -14,7 +14,10 @@ type (
1414 authHeaderName string
1515 }
1616 // headerAuthFilter implements [gosdk.HttpFilter].
17- headerAuthFilter struct { authHeaderName string }
17+ headerAuthFilter struct {
18+ authHeaderName string
19+ sendOnResponseHeaderPhase bool
20+ }
1821)
1922
2023// Destroy implements [gosdk.HttpFilterConfig].
@@ -26,29 +29,34 @@ func (p headerAuthFilterConfig) NewFilter() gosdk.HttpFilter {
2629}
2730
2831// Destroy implements [gosdk.HttpFilter].
29- func (p headerAuthFilter ) Destroy () {}
32+ func (p * headerAuthFilter ) Destroy () {}
3033
3134// RequestHeaders implements [gosdk.HttpFilter].
32- func (p headerAuthFilter ) RequestHeaders (e gosdk.EnvoyHttpFilter , endOfStream bool ) gosdk.RequestHeadersStatus {
33- _ , ok := e .GetRequestHeader (p .authHeaderName )
35+ func (p * headerAuthFilter ) RequestHeaders (e gosdk.EnvoyHttpFilter , endOfStream bool ) gosdk.RequestHeadersStatus {
36+ v , ok := e .GetRequestHeader (p .authHeaderName )
3437 if ! ok {
35- e .SendLocalReply (http .StatusUnauthorized , [][2 ]string {{"Content-Type" , "text/plain" }}, []byte ("Unauthorized by Go Module\n " ))
38+ e .SendLocalReply (http .StatusUnauthorized , [][2 ]string {{"Content-Type" , "text/plain" }}, []byte ("Unauthorized by Go Module at on_request_headers \n " ))
3639 return gosdk .RequestHeadersStatusStopIteration
3740 }
41+ p .sendOnResponseHeaderPhase = v == "on_response_headers"
3842 return gosdk .RequestHeadersStatusContinue
3943}
4044
4145// RequestBody implements [gosdk.HttpFilter].
42- func (p headerAuthFilter ) RequestBody (e gosdk.EnvoyHttpFilter , endOfStream bool ) gosdk.RequestBodyStatus {
46+ func (p * headerAuthFilter ) RequestBody (e gosdk.EnvoyHttpFilter , endOfStream bool ) gosdk.RequestBodyStatus {
4347 return gosdk .RequestBodyStatusContinue
4448}
4549
4650// ResponseHeaders implements [gosdk.HttpFilter].
47- func (p headerAuthFilter ) ResponseHeaders (e gosdk.EnvoyHttpFilter , endOfStream bool ) gosdk.ResponseHeadersStatus {
51+ func (p * headerAuthFilter ) ResponseHeaders (e gosdk.EnvoyHttpFilter , endOfStream bool ) gosdk.ResponseHeadersStatus {
52+ if p .sendOnResponseHeaderPhase {
53+ e .SendLocalReply (http .StatusUnauthorized , [][2 ]string {{"Content-Type" , "text/plain" }}, []byte ("Unauthorized by Go Module at on_response_headers\n " ))
54+ return gosdk .ResponseHeadersStatusStopIteration
55+ }
4856 return gosdk .ResponseHeadersStatusContinue
4957}
5058
5159// ResponseBody implements [gosdk.HttpFilter].
52- func (p headerAuthFilter ) ResponseBody (e gosdk.EnvoyHttpFilter , endOfStream bool ) gosdk.ResponseBodyStatus {
60+ func (p * headerAuthFilter ) ResponseBody (e gosdk.EnvoyHttpFilter , endOfStream bool ) gosdk.ResponseBodyStatus {
5361 return gosdk .ResponseBodyStatusContinue
5462}
0 commit comments