From 1baf921b491db8b1a2218c81cf32471bdd2d3fcd Mon Sep 17 00:00:00 2001 From: Radhi Fadlillah Date: Sat, 26 May 2018 20:52:59 +0700 Subject: [PATCH] Fix # in url rendered to %23 --- cmd/cmd-handler.go | 17 +++++++++-------- cmd/serve/web-handler-api.go | 9 +++++---- cmd/serve/web-handler-ui.go | 2 +- readability/read.go | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/cmd/cmd-handler.go b/cmd/cmd-handler.go index 0d5e0171..97053eb9 100644 --- a/cmd/cmd-handler.go +++ b/cmd/cmd-handler.go @@ -16,6 +16,7 @@ import ( dt "github.com/RadhiFadlillah/shiori/database" "github.com/RadhiFadlillah/shiori/model" "github.com/RadhiFadlillah/shiori/readability" + valid "github.com/asaskevich/govalidator" "github.com/gosuri/uiprogress" "github.com/spf13/cobra" ) @@ -36,8 +37,8 @@ func (h *cmdHandler) addBookmark(cmd *cobra.Command, args []string) { offline, _ := cmd.Flags().GetBool("offline") // Make sure URL valid - parsedURL, err := nurl.ParseRequestURI(url) - if err != nil || parsedURL.Host == "" { + parsedURL, err := nurl.Parse(url) + if err != nil || !valid.IsRequestURL(url) { cError.Println("URL is not valid") return } @@ -231,8 +232,8 @@ func (h *cmdHandler) updateBookmarks(cmd *cobra.Command, args []string) { // Check if --url flag is used if cmd.Flags().Changed("url") { // Make sure URL is valid - parsedURL, err := nurl.ParseRequestURI(url) - if err != nil || parsedURL.Host == "" { + parsedURL, err := nurl.Parse(url) + if err != nil || !valid.IsRequestURL(url) { cError.Println("URL is not valid") return } @@ -299,8 +300,8 @@ func (h *cmdHandler) updateBookmarks(cmd *cobra.Command, args []string) { } // Parse URL - parsedURL, err := nurl.ParseRequestURI(book.URL) - if err != nil || parsedURL.Host == "" { + parsedURL, err := nurl.Parse(book.URL) + if err != nil || !valid.IsRequestURL(book.URL) { return } @@ -616,8 +617,8 @@ func (h *cmdHandler) importBookmarks(cmd *cobra.Command, args []string) { // Save bookmarks to database for _, book := range bookmarks { // Make sure URL valid - parsedURL, err := nurl.ParseRequestURI(book.URL) - if err != nil || parsedURL.Host == "" { + parsedURL, err := nurl.Parse(book.URL) + if err != nil || !valid.IsRequestURL(book.URL) { cError.Println("URL is not valid") continue } diff --git a/cmd/serve/web-handler-api.go b/cmd/serve/web-handler-api.go index cb550b66..a743ad7a 100644 --- a/cmd/serve/web-handler-api.go +++ b/cmd/serve/web-handler-api.go @@ -14,6 +14,7 @@ import ( "github.com/RadhiFadlillah/shiori/model" "github.com/RadhiFadlillah/shiori/readability" + valid "github.com/asaskevich/govalidator" jwt "github.com/dgrijalva/jwt-go" "github.com/julienschmidt/httprouter" "golang.org/x/crypto/bcrypt" @@ -105,8 +106,8 @@ func (h *webHandler) apiInsertBookmark(w http.ResponseWriter, r *http.Request, p checkError(err) // Make sure URL valid - parsedURL, err := nurl.ParseRequestURI(book.URL) - if err != nil || parsedURL.Host == "" { + parsedURL, err := nurl.Parse(book.URL) + if err != nil || !valid.IsRequestURL(book.URL) { panic(fmt.Errorf("URL is not valid")) } @@ -322,8 +323,8 @@ func (h *webHandler) apiUpdateCache(w http.ResponseWriter, r *http.Request, ps h defer wg.Done() // Parse URL - parsedURL, err := nurl.ParseRequestURI(book.URL) - if err != nil || parsedURL.Host == "" { + parsedURL, err := nurl.Parse(book.URL) + if err != nil || !valid.IsRequestURL(book.URL) { return } diff --git a/cmd/serve/web-handler-ui.go b/cmd/serve/web-handler-ui.go index 6a1fd00f..c392a97c 100644 --- a/cmd/serve/web-handler-ui.go +++ b/cmd/serve/web-handler-ui.go @@ -69,7 +69,7 @@ func (h *webHandler) serveBookmarkCache(w http.ResponseWriter, r *http.Request, }, "hostname": func(s string) string { parsed, err := nurl.ParseRequestURI(s) - if err != nil || parsed.Host == "" { + if err != nil || len(parsed.Scheme) == 0 { return s } diff --git a/readability/read.go b/readability/read.go index d1cf743e..398dbb0b 100644 --- a/readability/read.go +++ b/readability/read.go @@ -932,7 +932,7 @@ func toAbsoluteURI(uri string, base *nurl.URL) string { // If it is already an absolute URL, return as it is tempURI, err := nurl.ParseRequestURI(uri) - if err == nil && tempURI.Host != "" { + if err == nil && len(tempURI.Scheme) == 0 { return uri }