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