@@ -19,6 +19,7 @@ import (
1919 headerfwd "github.com/stacklok/toolhive/pkg/transport/middleware"
2020 "github.com/stacklok/toolhive/pkg/transport/types"
2121 "github.com/stacklok/toolhive/pkg/usagemetrics"
22+ "github.com/stacklok/toolhive/pkg/webhook/validating"
2223)
2324
2425// GetSupportedMiddlewareFactories returns a map of supported middleware types to their factory functions
@@ -37,6 +38,7 @@ func GetSupportedMiddlewareFactories() map[string]types.MiddlewareFactory {
3738 audit .MiddlewareType : audit .CreateMiddleware ,
3839 recovery .MiddlewareType : recovery .CreateMiddleware ,
3940 headerfwd .HeaderForwardMiddlewareName : headerfwd .CreateMiddleware ,
41+ validating .MiddlewareType : validating .CreateMiddleware ,
4042 }
4143}
4244
@@ -113,6 +115,12 @@ func PopulateMiddlewareConfigs(config *RunConfig) error {
113115 }
114116 middlewareConfigs = append (middlewareConfigs , * mcpParserConfig )
115117
118+ // Validating Webhooks middleware (if configured)
119+ middlewareConfigs , err = addValidatingWebhookMiddleware (middlewareConfigs , config )
120+ if err != nil {
121+ return err
122+ }
123+
116124 // Load application config for global settings
117125 configProvider := cfg .NewDefaultProvider ()
118126 appConfig := configProvider .GetConfig ()
@@ -197,6 +205,28 @@ func PopulateMiddlewareConfigs(config *RunConfig) error {
197205 return nil
198206}
199207
208+ // addValidatingWebhookMiddleware configures the validating webhook middleware if any webhooks are defined
209+ func addValidatingWebhookMiddleware (configs []types.MiddlewareConfig , runConfig * RunConfig ) ([]types.MiddlewareConfig , error ) {
210+ if len (runConfig .ValidatingWebhooks ) == 0 {
211+ return configs , nil
212+ }
213+
214+ params := validating.FactoryMiddlewareParams {
215+ MiddlewareParams : validating.MiddlewareParams {
216+ Webhooks : runConfig .ValidatingWebhooks ,
217+ },
218+ ServerName : runConfig .Name ,
219+ Transport : runConfig .Transport .String (),
220+ }
221+
222+ config , err := types .NewMiddlewareConfig (validating .MiddlewareType , params )
223+ if err != nil {
224+ return nil , fmt .Errorf ("failed to create validating webhook middleware config: %w" , err )
225+ }
226+
227+ return append (configs , * config ), nil
228+ }
229+
200230// addTokenExchangeMiddleware adds token exchange middleware if configured
201231func addTokenExchangeMiddleware (
202232 middlewares []types.MiddlewareConfig ,
0 commit comments