From 97cf721abc9c5b88f3ace1d2cda8a18d1599769d Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Mon, 1 Dec 2025 22:05:53 -0600 Subject: [PATCH] add string.create processor --- internal/processing/string-create.go | 57 ++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 internal/processing/string-create.go diff --git a/internal/processing/string-create.go b/internal/processing/string-create.go new file mode 100644 index 0000000..ba9e257 --- /dev/null +++ b/internal/processing/string-create.go @@ -0,0 +1,57 @@ +package processing + +import ( + "bytes" + "context" + "fmt" + "text/template" +) + +type StringCreate struct { + config ProcessorConfig + Template *template.Template +} + +func (sc *StringCreate) Process(ctx context.Context, payload any) (any, error) { + var templateBuffer bytes.Buffer + err := sc.Template.Execute(&templateBuffer, payload) + + if err != nil { + return nil, err + } + + payloadString := templateBuffer.String() + + return payloadString, nil +} + +func (sc *StringCreate) Type() string { + return sc.config.Type +} + +func init() { + RegisterProcessor(ProcessorRegistration{ + Type: "string.create", + New: func(config ProcessorConfig) (Processor, error) { + params := config.Params + tmpl, ok := params["template"] + + if !ok { + return nil, fmt.Errorf("string.create requires a template parameter") + } + + templateString, ok := tmpl.(string) + + if !ok { + return nil, fmt.Errorf("string.create template must be a string") + } + + templateTemplate, err := template.New("template").Parse(templateString) + + if err != nil { + return nil, err + } + return &StringCreate{config: config, Template: templateTemplate}, nil + }, + }) +}