diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-04-05 13:16:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-05 13:16:13 +0200 |
commit | 9005f40c6986b182468b7e0b4fd97ffb627a6e2a (patch) | |
tree | f03137aa61aa8a989e8dd1df47a93a38707533a0 /vendor/github.com/go-task/slim-sprig/url.go | |
parent | 6ca4bc3fe4f9f96f8c9deca5db5138d68857a831 (diff) | |
parent | ed5ad8cac44119f33ab595cb790a8603a53569c9 (diff) | |
download | podman-9005f40c6986b182468b7e0b4fd97ffb627a6e2a.tar.gz podman-9005f40c6986b182468b7e0b4fd97ffb627a6e2a.tar.bz2 podman-9005f40c6986b182468b7e0b4fd97ffb627a6e2a.zip |
Merge pull request #9937 from containers/dependabot/go_modules/github.com/onsi/ginkgo-1.16.0
Bump github.com/onsi/ginkgo from 1.15.2 to 1.16.0
Diffstat (limited to 'vendor/github.com/go-task/slim-sprig/url.go')
-rw-r--r-- | vendor/github.com/go-task/slim-sprig/url.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/vendor/github.com/go-task/slim-sprig/url.go b/vendor/github.com/go-task/slim-sprig/url.go new file mode 100644 index 000000000..b8e120e19 --- /dev/null +++ b/vendor/github.com/go-task/slim-sprig/url.go @@ -0,0 +1,66 @@ +package sprig + +import ( + "fmt" + "net/url" + "reflect" +) + +func dictGetOrEmpty(dict map[string]interface{}, key string) string { + value, ok := dict[key] + if !ok { + return "" + } + tp := reflect.TypeOf(value).Kind() + if tp != reflect.String { + panic(fmt.Sprintf("unable to parse %s key, must be of type string, but %s found", key, tp.String())) + } + return reflect.ValueOf(value).String() +} + +// parses given URL to return dict object +func urlParse(v string) map[string]interface{} { + dict := map[string]interface{}{} + parsedURL, err := url.Parse(v) + if err != nil { + panic(fmt.Sprintf("unable to parse url: %s", err)) + } + dict["scheme"] = parsedURL.Scheme + dict["host"] = parsedURL.Host + dict["hostname"] = parsedURL.Hostname() + dict["path"] = parsedURL.Path + dict["query"] = parsedURL.RawQuery + dict["opaque"] = parsedURL.Opaque + dict["fragment"] = parsedURL.Fragment + if parsedURL.User != nil { + dict["userinfo"] = parsedURL.User.String() + } else { + dict["userinfo"] = "" + } + + return dict +} + +// join given dict to URL string +func urlJoin(d map[string]interface{}) string { + resURL := url.URL{ + Scheme: dictGetOrEmpty(d, "scheme"), + Host: dictGetOrEmpty(d, "host"), + Path: dictGetOrEmpty(d, "path"), + RawQuery: dictGetOrEmpty(d, "query"), + Opaque: dictGetOrEmpty(d, "opaque"), + Fragment: dictGetOrEmpty(d, "fragment"), + } + userinfo := dictGetOrEmpty(d, "userinfo") + var user *url.Userinfo + if userinfo != "" { + tempURL, err := url.Parse(fmt.Sprintf("proto://%s@host", userinfo)) + if err != nil { + panic(fmt.Sprintf("unable to parse userinfo in dict: %s", err)) + } + user = tempURL.User + } + + resURL.User = user + return resURL.String() +} |