diff options
author | Peter De Wachter <pdewacht@gmail.com> | 2019-08-13 17:44:23 +0200 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2019-08-19 19:42:47 -0700 |
commit | b6f3160dbc3efe7a86d39d526a1780eb320eefd4 (patch) | |
tree | fc1148cd9a3de6611a9ca319a54b29c9a0f05cd0 /reader/rewrite/rewrite_functions.go | |
parent | 77125f45ccebc1b9abc9aeef2a8576b6841c5768 (diff) |
add_mailto_subject: New rewrite function
Dinosaur Comics (qwantz.com) likes to hide jokes in mailto: links, but
miniflux's sanitizer strips those out.
Diffstat (limited to 'reader/rewrite/rewrite_functions.go')
-rw-r--r-- | reader/rewrite/rewrite_functions.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/reader/rewrite/rewrite_functions.go b/reader/rewrite/rewrite_functions.go index 667f359..8988cc5 100644 --- a/reader/rewrite/rewrite_functions.go +++ b/reader/rewrite/rewrite_functions.go @@ -7,6 +7,7 @@ package rewrite // import "miniflux.app/reader/rewrite" import ( "fmt" "html" + "net/url" "regexp" "strings" @@ -43,6 +44,38 @@ func addImageTitle(entryURL, entryContent string) string { return entryContent } +func addMailtoSubject(entryURL, entryContent string) string { + doc, err := goquery.NewDocumentFromReader(strings.NewReader(entryContent)) + if err != nil { + return entryContent + } + + matches := doc.Find(`a[href^="mailto:"]`) + + if matches.Length() > 0 { + matches.Each(func(i int, a *goquery.Selection) { + hrefAttr, _ := a.Attr("href") + + mailto, err := url.Parse(hrefAttr) + if err != nil { + return + } + + subject := mailto.Query().Get("subject") + if subject == "" { + return + } + + a.AppendHtml(" [" + html.EscapeString(subject) + "]") + }) + + output, _ := doc.Find("body").First().Html() + return output + } + + return entryContent +} + func addDynamicImage(entryURL, entryContent string) string { doc, err := goquery.NewDocumentFromReader(strings.NewReader(entryContent)) if err != nil { |