From 6bdc4cd8dd43678422c7917ef42acd0585b2ceb0 Mon Sep 17 00:00:00 2001 From: Topvennie Date: Wed, 29 Oct 2025 21:12:38 +0100 Subject: [PATCH] feat(zauth): send html mails --- go.mod | 1 + go.sum | 2 ++ pkg/zauth/mail.go | 31 ++++++++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 9b5003c..9455185 100644 --- a/go.mod +++ b/go.mod @@ -133,6 +133,7 @@ require ( github.com/wasilibs/wazero-helpers v0.0.0-20240620070341-3dff1577cd52 // indirect github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77 // indirect github.com/ydb-platform/ydb-go-sdk/v3 v3.108.1 // indirect + github.com/yuin/goldmark v1.7.13 // indirect github.com/ziutek/mymysql v1.5.4 // indirect go.mongodb.org/mongo-driver v1.17.4 // indirect go.opentelemetry.io/otel v1.38.0 // indirect diff --git a/go.sum b/go.sum index 89cee02..a0d7a79 100644 --- a/go.sum +++ b/go.sum @@ -456,6 +456,8 @@ github.com/ydb-platform/ydb-go-sdk/v3 v3.108.1/go.mod h1:l5sSv153E18VvYcsmr51hok github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA= +github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= diff --git a/pkg/zauth/mail.go b/pkg/zauth/mail.go index 53e7b4f..3ff8d14 100644 --- a/pkg/zauth/mail.go +++ b/pkg/zauth/mail.go @@ -7,6 +7,10 @@ import ( "fmt" "net/http" + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/extension" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer/html" "golang.org/x/oauth2" "golang.org/x/oauth2/clientcredentials" ) @@ -27,9 +31,14 @@ func (c *client) MailAll(ctx context.Context, subject, content string) error { client := conf.Client(ctx) + html, err := toHTML(content) + if err != nil { + return err + } + m := mail{ Subject: subject, - Content: content, + Content: html, Author: "Zeus WPI", } jsonBytes, err := json.Marshal(m) @@ -55,3 +64,23 @@ func (c *client) MailAll(ctx context.Context, subject, content string) error { return nil } + +func toHTML(content string) (string, error) { + md := goldmark.New( + goldmark.WithExtensions(extension.GFM), + goldmark.WithParserOptions( + parser.WithAutoHeadingID(), + ), + goldmark.WithRendererOptions( + html.WithHardWraps(), + html.WithUnsafe(), + ), + ) + + var buf bytes.Buffer + if err := md.Convert([]byte(content), &buf); err != nil { + return "", fmt.Errorf("convert markdown to html %s | %w", content, err) + } + + return buf.String(), nil +}