aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/email/parser.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-10-25 14:29:36 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-10-25 12:42:32 +0000
commit65e8686b0e9e909b6ea5629f95a9b14e81927872 (patch)
tree72d5dfa978f09fca4df8a6265a51a9f92f747af8 /pkg/email/parser.go
parent42a1ab121510d4ace36fddeb7396bdb7f28bd489 (diff)
dashboard: adapt to the new Googe Groups footer
It changed recently and it broke our email discussion link extraction. Closes #5431.
Diffstat (limited to 'pkg/email/parser.go')
-rw-r--r--pkg/email/parser.go8
1 files changed, 6 insertions, 2 deletions
diff --git a/pkg/email/parser.go b/pkg/email/parser.go
index e8aa1a8c0..b748d02c3 100644
--- a/pkg/email/parser.go
+++ b/pkg/email/parser.go
@@ -11,6 +11,7 @@ import (
"mime/multipart"
"mime/quotedprintable"
"net/mail"
+ "net/url"
"regexp"
"sort"
"strings"
@@ -59,8 +60,8 @@ const (
cmdTest5
)
-var groupsLinkRe = regexp.MustCompile("\nTo view this discussion on the web visit" +
- " (https://groups\\.google\\.com/.*?)\\.(?:\r)?\n")
+var groupsLinkRe = regexp.MustCompile(`(?m)\nTo view this discussion (?:on the web )?visit` +
+ ` (https://groups\.google\.com/.*?)\.(:?$|\n|\r)`)
func prepareEmails(list []string) map[string]bool {
ret := make(map[string]bool)
@@ -153,6 +154,9 @@ func Parse(r io.Reader, ownEmails, goodLists, domains []string) (*Email, error)
link := ""
if match := groupsLinkRe.FindStringSubmatchIndex(bodyStr); match != nil {
link = bodyStr[match[2]:match[3]]
+ if unescaped, err := url.QueryUnescape(link); err == nil {
+ link = unescaped
+ }
}
author := CanonicalEmail(from[0].Address)