1package rest 2 3import ( 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 12func 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 23func URLPathEscape(in string) string { 24 var u url.URL 25 u.Path = in 26 return u.String() 27} 28