package main import ( "errors" "fmt" ) type Template struct { Subject string Body string } type TemplateFunc func(args map[string]string) Template func getTemplate(appURL string, templateName string) (TemplateFunc, error) { switch templateName { case "email_verification": return emailVerificationTemplate(appURL), nil case "reset_password": return passwordResetTemplate(appURL), nil default: return nil, errors.New("failed to get template") //nolint:err113 } } func emailVerificationTemplate(appURL string) TemplateFunc { return func(opts map[string]string) Template { return Template{ Subject: "Onasty: verify your email", Body: fmt.Sprintf(`To verify your email, please follow this link: %[1]s/api/v1/auth/verify/%[2]s

This link will expire after 24 hours.`, appURL, opts["token"]), } } } func passwordResetTemplate(appURL string) TemplateFunc { return func(opts map[string]string) Template { return Template{ Subject: "Onasty: reset your password", // TODO: when ui is ready, change the link to the ui Body: fmt.Sprintf(`To reset your password, use this api: %[1]s/api/v1/auth/reset-password/%[2]s

This link will expire after an hour.`, appURL, opts["token"]), } } }