ref: e4ee1b89ad21f46dab96c9099f554bef4602650b
parent: 16b71bbbb4c283f29e6e757dbf1fc304703704a9
author: Cameron Moore <moorereason@gmail.com>
date: Wed Apr 27 05:54:44 EDT 2016
helpers: Use net/url for URL parsing in AbsURL Fixes #2112
--- a/helpers/url.go
+++ b/helpers/url.go
@@ -148,7 +148,12 @@
// AbsURL creates a absolute URL from the relative path given and the BaseURL set in config.
func AbsURL(path string) string {- if strings.HasPrefix(path, "http") || strings.HasPrefix(path, "//") {+ url, err := url.Parse(path)
+ if err != nil {+ return path
+ }
+
+ if url.IsAbs() || strings.HasPrefix(path, "//") {return path
}
--- a/helpers/url_test.go
+++ b/helpers/url_test.go
@@ -52,9 +52,11 @@
{"", "http://base/ace/", "http://base/ace/"}, {"/test/2/foo/", "http://base", "http://base/test/2/foo/"}, {"http://abs", "http://base/", "http://abs"},+ {"schema://abs", "http://base/", "schema://abs"}, {"//schemaless", "http://base/", "//schemaless"}, {"test/2/foo/", "http://base/path", "http://base/path/test/2/foo/"}, {"/test/2/foo/", "http://base/path", "http://base/test/2/foo/"},+ {"http//foo", "http://base/path", "http://base/path/http/foo"},}
for _, test := range tests {--
⑨