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  }