diff options
author | Sam Smith <sams96@mail.com> | 2020-03-07 18:56:02 +0000 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-03-09 13:31:04 +0100 |
commit | c4fa2f07996c7f1f4e257089a3c3c5b4c1339722 (patch) | |
tree | 585cbe9deef705f97dd574000472e541a0cb5285 | |
parent | 108314444b510bfc330ccac745dce7beccd52c91 (diff) |
tpl: Fix error with unicode in file paths
Add url.QueryUnescape before reading file which allows files with
unicode in their paths to be read.
Fixes #6996
-rw-r--r-- | tpl/data/data_test.go | 5 | ||||
-rw-r--r-- | tpl/data/resources.go | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/tpl/data/data_test.go b/tpl/data/data_test.go index 8bd4edc98..fa99006b2 100644 --- a/tpl/data/data_test.go +++ b/tpl/data/data_test.go @@ -157,6 +157,11 @@ func TestGetJSON(t *testing.T) { "", false, }, + { + `pass/üńīçøðê-url.json`, + `{"gomeetup":["Sydney","San Francisco","Stockholm"]}`, + map[string]interface{}{"gomeetup": []interface{}{"Sydney", "San Francisco", "Stockholm"}}, + }, } { msg := qt.Commentf("Test %d", i) diff --git a/tpl/data/resources.go b/tpl/data/resources.go index 7de440ca6..923d5946e 100644 --- a/tpl/data/resources.go +++ b/tpl/data/resources.go @@ -16,6 +16,7 @@ package data import ( "io/ioutil" "net/http" + "net/url" "path/filepath" "time" @@ -107,7 +108,11 @@ func getLocal(url string, fs afero.Fs, cfg config.Provider) ([]byte, error) { func (ns *Namespace) getResource(cache *filecache.Cache, unmarshal func(b []byte) (bool, error), req *http.Request) error { switch req.URL.Scheme { case "": - b, err := getLocal(req.URL.String(), ns.deps.Fs.Source, ns.deps.Cfg) + url, err := url.QueryUnescape(req.URL.String()) + if err != nil { + return err + } + b, err := getLocal(url, ns.deps.Fs.Source, ns.deps.Cfg) if err != nil { return err } |