From d16737954621485f93c0597794792be67adf2244 Mon Sep 17 00:00:00 2001 From: Radhi Fadlillah Date: Mon, 5 Mar 2018 21:35:01 +0700 Subject: [PATCH] Clear UTM parameters from URL --- cmd/add.go | 26 ++++++++++++++++++++++++++ cmd/update.go | 7 +++++++ 2 files changed, 33 insertions(+) diff --git a/cmd/add.go b/cmd/add.go index 94735e53..0497b17e 100644 --- a/cmd/add.go +++ b/cmd/add.go @@ -2,6 +2,7 @@ package cmd import ( "html/template" + nurl "net/url" "strings" "time" @@ -59,6 +60,12 @@ func addBookmark(base model.Bookmark, offline bool) (book model.Bookmark, err er // Prepare initial result book = base + // Clear UTM parameters from URL + book.URL, err = clearUTMParams(book.URL) + if err != nil { + return book, err + } + // Fetch data from internet if !offline { article, err := readability.Parse(book.URL, 10*time.Second) @@ -94,3 +101,22 @@ func addBookmark(base model.Bookmark, offline bool) (book model.Bookmark, err er func normalizeSpace(str string) string { return strings.Join(strings.Fields(str), " ") } + +func clearUTMParams(uri string) (string, error) { + tempURL, err := nurl.Parse(uri) + if err != nil { + return "", err + } + + newQuery := nurl.Values{} + for key, value := range tempURL.Query() { + if strings.HasPrefix(key, "utm_") { + continue + } + + newQuery[key] = value + } + + tempURL.RawQuery = newQuery.Encode() + return tempURL.String(), nil +} diff --git a/cmd/update.go b/cmd/update.go index 3dbf5702..75baba74 100644 --- a/cmd/update.go +++ b/cmd/update.go @@ -82,6 +82,13 @@ func init() { func updateBookmarks(indices []string, url, title, excerpt string, tags []string, offline bool) ([]model.Bookmark, error) { mutex := sync.Mutex{} + + // Clear UTM parameters from URL + url, err := clearUTMParams(url) + if err != nil { + return []model.Bookmark{}, err + } + // Read bookmarks from database bookmarks, err := DB.GetBookmarks(true, indices...) if err != nil {