github.com/ncw/rclone@v1.48.1-0.20190724201158-a35aa1360e3e/lib/rest/url.go (about) 1 package rest 2 3 import ( 4 "net/url" 5 6 "github.com/pkg/errors" 7 ) 8 9 // URLJoin joins a URL and a path returning a new URL 10 // 11 // path should be URL escaped 12 func URLJoin(base *url.URL, path string) (*url.URL, error) { 13 rel, err := url.Parse(path) 14 if err != nil { 15 return nil, errors.Wrapf(err, "Error parsing %q as URL", path) 16 } 17 return base.ResolveReference(rel), nil 18 } 19 20 // URLPathEscape escapes URL path the in string using URL escaping rules 21 // 22 // This mimics url.PathEscape which only available from go 1.8 23 func URLPathEscape(in string) string { 24 var u url.URL 25 u.Path = in 26 return u.String() 27 }