diff --git a/pkg/glazed/handlers/json/json.go b/pkg/glazed/handlers/json/json.go index 8d4d6ef..d83755a 100644 --- a/pkg/glazed/handlers/json/json.go +++ b/pkg/glazed/handlers/json/json.go @@ -48,7 +48,8 @@ func (h *QueryHandler) Handle(c *gin.Context, writer io.Writer) error { description := h.cmd.Description() parsedLayers := layers.NewParsedLayers() - middlewares_ := append(h.middlewares, + middlewares_ := append( + h.middlewares, middlewares2.UpdateFromQueryParameters(c, parameters.WithParseStepSource("query")), middlewares.SetFromDefaults(), ) @@ -119,11 +120,9 @@ func (h *QueryHandler) Handle(c *gin.Context, writer io.Writer) error { func CreateJSONQueryHandler( cmd cmds.Command, - middlewares ...middlewares.Middleware, + options ...QueryHandlerOption, ) gin.HandlerFunc { - handler := NewQueryHandler(cmd, - WithMiddlewares(middlewares...), - ) + handler := NewQueryHandler(cmd, options...) return func(c *gin.Context) { err := handler.Handle(c, c.Writer) if err != nil { diff --git a/pkg/handlers/command-dir/command-dir.go b/pkg/handlers/command-dir/command-dir.go index 90b0458..c277ca6 100644 --- a/pkg/handlers/command-dir/command-dir.go +++ b/pkg/handlers/command-dir/command-dir.go @@ -192,6 +192,7 @@ func (cd *CommandDirHandler) Serve(server *parka.Server, path string) error { path = strings.TrimSuffix(path, "/") + middlewares_ := cd.ParameterFilter.ComputeMiddlewares(cd.Stream) server.Router.GET(path+"/data/*path", func(c *gin.Context) { commandPath := c.Param("path") commandPath = strings.TrimPrefix(commandPath, "/") @@ -203,13 +204,14 @@ func (cd *CommandDirHandler) Serve(server *parka.Server, path string) error { switch v := command.(type) { case cmds.GlazeCommand: - json.CreateJSONQueryHandler(v)(c) + json.CreateJSONQueryHandler(v, json.WithMiddlewares(middlewares_...))(c) default: text.CreateQueryHandler(v)(c) } }) - // Redirect Route + // Redirect Route for legacy + // TODO(manuel, 2024-01-17) This really should be moved to some kind of config file option server.Router.GET(path+"/sqleton/*path", func(c *gin.Context) { commandPath := c.Param("path") rawQuery := c.Request.URL.RawQuery @@ -220,7 +222,6 @@ func (cd *CommandDirHandler) Serve(server *parka.Server, path string) error { c.Redirect(301, newURL) }) - middlewares := cd.ParameterFilter.ComputeMiddlewares(cd.Stream) server.Router.GET(path+"/text/*path", func(c *gin.Context) { commandPath := c.Param("path") commandPath = strings.TrimPrefix(commandPath, "/") @@ -230,7 +231,7 @@ func (cd *CommandDirHandler) Serve(server *parka.Server, path string) error { return } - text.CreateQueryHandler(command, middlewares...)(c) + text.CreateQueryHandler(command, middlewares_...)(c) }) server.Router.GET(path+"/streaming/*path", func(c *gin.Context) { @@ -242,7 +243,7 @@ func (cd *CommandDirHandler) Serve(server *parka.Server, path string) error { return } - sse.CreateQueryHandler(command, middlewares...)(c) + sse.CreateQueryHandler(command, middlewares_...)(c) }) server.Router.GET(path+"/datatables/*path", @@ -259,7 +260,7 @@ func (cd *CommandDirHandler) Serve(server *parka.Server, path string) error { switch v := command.(type) { case cmds.GlazeCommand: options := []datatables.QueryHandlerOption{ - datatables.WithMiddlewares(middlewares...), + datatables.WithMiddlewares(middlewares_...), datatables.WithTemplateLookup(cd.TemplateLookup), datatables.WithTemplateName(cd.TemplateName), datatables.WithAdditionalData(cd.AdditionalData), @@ -298,7 +299,7 @@ func (cd *CommandDirHandler) Serve(server *parka.Server, path string) error { output_file.CreateGlazedFileHandler( v, fileName, - middlewares..., + middlewares_..., )(c) case cmds.WriterCommand: diff --git a/pkg/handlers/command/command.go b/pkg/handlers/command/command.go index b911fbb..cd67a23 100644 --- a/pkg/handlers/command/command.go +++ b/pkg/handlers/command/command.go @@ -226,10 +226,15 @@ func NewCommandHandlerFromConfig( func (ch *CommandHandler) Serve(server *parka.Server, path string) error { path = strings.TrimSuffix(path, "/") + middlewares_ := ch.ParameterFilter.ComputeMiddlewares(ch.Stream) + server.Router.GET(path+"/data", func(c *gin.Context) { - json.CreateJSONQueryHandler(ch.Command)(c) + options := []json.QueryHandlerOption{ + json.WithMiddlewares(middlewares_...), + } + json.CreateJSONQueryHandler(ch.Command, options...)(c) }) - middlewares_ := ch.ParameterFilter.ComputeMiddlewares(ch.Stream) + // TODO(manuel, 2024-01-17) This doesn't seem to match what is in command-dir server.Router.GET(path+"/glazed", func(c *gin.Context) { options := []datatables.QueryHandlerOption{ datatables.WithMiddlewares(middlewares_...),