package email import "strings" // mail related images hosted on github var ( nLogoTeal = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/N_Teal.png" netmakerLogoTeal = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/netmaker-logo-2.png" netmakerMeshLogo = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/netmaker-mesh.png" linkedinIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/linkedin2x.png" discordIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/discord-logo-png-7617.png" githubIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/Octocat.png" mailIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/icons8-mail-24.png" addressIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/icons8-address-16.png" linkIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/icons8-hyperlink-64.png" ) type EmailBodyBuilder interface { WithHeadline(text string) EmailBodyBuilder WithParagraph(text string) EmailBodyBuilder WithSignature() EmailBodyBuilder Build() string } type EmailBodyBuilderWithH1HeadlineAndImage struct { headline string paragraphs []string hasSignature bool } func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithHeadline(text string) EmailBodyBuilder { b.headline = text return b } func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithParagraph(text string) EmailBodyBuilder { b.paragraphs = append(b.paragraphs, text) return b } func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithSignature() EmailBodyBuilder { b.hasSignature = true return b } func (b *EmailBodyBuilderWithH1HeadlineAndImage) Build() string { // map paragraphs to styled paragraphs styledParagraphsSlice := make([]string, len(b.paragraphs)) for i, paragraph := range b.paragraphs { styledParagraphsSlice[i] = styledParagraph(paragraph) } // join styled paragraphs styledParagraphsString := strings.Join(styledParagraphsSlice, "") signature := "" if b.hasSignature { signature = styledSignature() } return ` ` + signature + ` ` } func styledSignature() string { return ` ` } func styledParagraph(text string) string { return `

` + text + `

` } func GetMailSignature() string { return styledSignature() }