diff --git a/internals/proxy/middlewares/aliases.go b/internals/proxy/middlewares/aliases.go index d38e81a..1f737b9 100644 --- a/internals/proxy/middlewares/aliases.go +++ b/internals/proxy/middlewares/aliases.go @@ -107,7 +107,7 @@ func getData(key string, aliases []middlewareTypes.DataAlias, data map[string]an value = aliasValue } - data[alias.Alias] = nil + delete(data, alias.Alias) } } diff --git a/internals/proxy/middlewares/message.go b/internals/proxy/middlewares/message.go index 5761a7a..67b5492 100644 --- a/internals/proxy/middlewares/message.go +++ b/internals/proxy/middlewares/message.go @@ -82,7 +82,9 @@ func (data MessageMiddleware) Use() http.Handler { } func TemplateMessage(template string, data map[string]any, VARIABLES map[string]any) (map[string]any, error) { - data["message"] = template + log.Dev(template) + + data["message_template"] = template data, ok, err := TemplateBody(data, VARIABLES) @@ -90,5 +92,9 @@ func TemplateMessage(template string, data map[string]any, VARIABLES map[string] return data, err } + data["message"] = data["message_template"] + + delete(data, "message_template") + return data, nil } \ No newline at end of file diff --git a/utils/templating/templating.go b/utils/templating/templating.go index 3f66c90..bb8b7e0 100644 --- a/utils/templating/templating.go +++ b/utils/templating/templating.go @@ -7,6 +7,9 @@ import ( "regexp" "strings" "text/template" + + "github.com/codeshelldev/secured-signal-api/utils/jsonutils" + "github.com/codeshelldev/secured-signal-api/utils/logger" ) func normalize(value any) string { @@ -128,6 +131,8 @@ func RenderJSONTemplate(name string, data map[string]any, variables map[string]a tmplStr := string(jsonBytes) + logger.Dev("1\n", tmplStr) + re, err := regexp.Compile(`{{\s*\.([a-zA-Z0-9_.]+)\s*}}`) // Add normalize() to be able to remove Quotes from Arrays @@ -135,18 +140,24 @@ func RenderJSONTemplate(name string, data map[string]any, variables map[string]a tmplStr = re.ReplaceAllString(tmplStr, "{{normalize .$1}}") } + logger.Dev("2\n", tmplStr) + templt := CreateTemplateWithFunc(name, template.FuncMap{ "normalize": normalizeJSON, }) jsonStr, err := ParseTemplate(templt, tmplStr, variables) + logger.Dev("3\n", tmplStr) + if err != nil { return nil, err } jsonStr = cleanQuotedPairsJSON(jsonStr) + logger.Dev("4\n", tmplStr) + // Remove the Quotes around "<<[item1,item2]>>" re, err = regexp.Compile(`"<<(.*?)>>"`) @@ -156,8 +167,12 @@ func RenderJSONTemplate(name string, data map[string]any, variables map[string]a jsonStr = re.ReplaceAllString(jsonStr, "$1") + logger.Dev("5\n", tmplStr) + err = json.Unmarshal([]byte(jsonStr), &data) + logger.Dev("6\n", jsonutils.ToJson(data)) + if err != nil { return nil, err }