helper: Remove url helper (moved to go-getter)
This commit is contained in:
parent
e7c88eab35
commit
1e3cc7b33f
|
@ -1,14 +0,0 @@
|
||||||
package url
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/url"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Parse parses rawURL into a URL structure.
|
|
||||||
// The rawURL may be relative or absolute.
|
|
||||||
//
|
|
||||||
// Parse is a wrapper for the Go stdlib net/url Parse function, but returns
|
|
||||||
// Windows "safe" URLs on Windows platforms.
|
|
||||||
func Parse(rawURL string) (*url.URL, error) {
|
|
||||||
return parse(rawURL)
|
|
||||||
}
|
|
|
@ -1,88 +0,0 @@
|
||||||
package url
|
|
||||||
|
|
||||||
import (
|
|
||||||
"runtime"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
type parseTest struct {
|
|
||||||
rawURL string
|
|
||||||
scheme string
|
|
||||||
host string
|
|
||||||
path string
|
|
||||||
str string
|
|
||||||
err bool
|
|
||||||
}
|
|
||||||
|
|
||||||
var parseTests = []parseTest{
|
|
||||||
{
|
|
||||||
rawURL: "/foo/bar",
|
|
||||||
scheme: "",
|
|
||||||
host: "",
|
|
||||||
path: "/foo/bar",
|
|
||||||
str: "/foo/bar",
|
|
||||||
err: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rawURL: "file:///dir/",
|
|
||||||
scheme: "file",
|
|
||||||
host: "",
|
|
||||||
path: "/dir/",
|
|
||||||
str: "file:///dir/",
|
|
||||||
err: false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var winParseTests = []parseTest{
|
|
||||||
{
|
|
||||||
rawURL: `C:\`,
|
|
||||||
scheme: ``,
|
|
||||||
host: ``,
|
|
||||||
path: `C:/`,
|
|
||||||
str: `C:/`,
|
|
||||||
err: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rawURL: `file://C:\`,
|
|
||||||
scheme: `file`,
|
|
||||||
host: ``,
|
|
||||||
path: `C:/`,
|
|
||||||
str: `file://C:/`,
|
|
||||||
err: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rawURL: `file:///C:\`,
|
|
||||||
scheme: `file`,
|
|
||||||
host: ``,
|
|
||||||
path: `C:/`,
|
|
||||||
str: `file://C:/`,
|
|
||||||
err: false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParse(t *testing.T) {
|
|
||||||
if runtime.GOOS == "windows" {
|
|
||||||
parseTests = append(parseTests, winParseTests...)
|
|
||||||
}
|
|
||||||
for i, pt := range parseTests {
|
|
||||||
url, err := Parse(pt.rawURL)
|
|
||||||
if err != nil && !pt.err {
|
|
||||||
t.Errorf("test %d: unexpected error: %s", i, err)
|
|
||||||
}
|
|
||||||
if err == nil && pt.err {
|
|
||||||
t.Errorf("test %d: expected an error", i)
|
|
||||||
}
|
|
||||||
if url.Scheme != pt.scheme {
|
|
||||||
t.Errorf("test %d: expected Scheme = %q, got %q", i, pt.scheme, url.Scheme)
|
|
||||||
}
|
|
||||||
if url.Host != pt.host {
|
|
||||||
t.Errorf("test %d: expected Host = %q, got %q", i, pt.host, url.Host)
|
|
||||||
}
|
|
||||||
if url.Path != pt.path {
|
|
||||||
t.Errorf("test %d: expected Path = %q, got %q", i, pt.path, url.Path)
|
|
||||||
}
|
|
||||||
if url.String() != pt.str {
|
|
||||||
t.Errorf("test %d: expected url.String() = %q, got %q", i, pt.str, url.String())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
// +build !windows
|
|
||||||
|
|
||||||
package url
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/url"
|
|
||||||
)
|
|
||||||
|
|
||||||
func parse(rawURL string) (*url.URL, error) {
|
|
||||||
return url.Parse(rawURL)
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
package url
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"net/url"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
func parse(rawURL string) (*url.URL, error) {
|
|
||||||
// Make sure we're using "/" since URLs are "/"-based.
|
|
||||||
rawURL = filepath.ToSlash(rawURL)
|
|
||||||
|
|
||||||
u, err := url.Parse(rawURL)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(rawURL) > 1 && rawURL[1] == ':' {
|
|
||||||
// Assume we're dealing with a drive letter file path where the drive
|
|
||||||
// letter has been parsed into the URL Scheme, and the rest of the path
|
|
||||||
// has been parsed into the URL Path without the leading ':' character.
|
|
||||||
u.Path = fmt.Sprintf("%s:%s", string(rawURL[0]), u.Path)
|
|
||||||
u.Scheme = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(u.Host) > 1 && u.Host[1] == ':' && strings.HasPrefix(rawURL, "file://") {
|
|
||||||
// Assume we're dealing with a drive letter file path where the drive
|
|
||||||
// letter has been parsed into the URL Host.
|
|
||||||
u.Path = fmt.Sprintf("%s%s", u.Host, u.Path)
|
|
||||||
u.Host = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove leading slash for absolute file paths.
|
|
||||||
if len(u.Path) > 2 && u.Path[0] == '/' && u.Path[2] == ':' {
|
|
||||||
u.Path = u.Path[1:]
|
|
||||||
}
|
|
||||||
|
|
||||||
return u, err
|
|
||||||
}
|
|
Loading…
Reference in New Issue