diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 13:14:23 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 13:14:23 +0000 |
commit | 73df946d56c74384511a194dd01dbe099584fd1a (patch) | |
tree | fd0bcea490dd81327ddfbb31e215439672c9a068 /src/net/url/example_test.go | |
parent | Initial commit. (diff) | |
download | golang-1.16-upstream.tar.xz golang-1.16-upstream.zip |
Adding upstream version 1.16.10.upstream/1.16.10upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/net/url/example_test.go')
-rw-r--r-- | src/net/url/example_test.go | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/src/net/url/example_test.go b/src/net/url/example_test.go new file mode 100644 index 0000000..cb9e892 --- /dev/null +++ b/src/net/url/example_test.go @@ -0,0 +1,256 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package url_test + +import ( + "encoding/json" + "fmt" + "log" + "net/url" + "strings" +) + +func ExampleValues() { + v := url.Values{} + v.Set("name", "Ava") + v.Add("friend", "Jess") + v.Add("friend", "Sarah") + v.Add("friend", "Zoe") + // v.Encode() == "name=Ava&friend=Jess&friend=Sarah&friend=Zoe" + fmt.Println(v.Get("name")) + fmt.Println(v.Get("friend")) + fmt.Println(v["friend"]) + // Output: + // Ava + // Jess + // [Jess Sarah Zoe] +} + +func ExampleURL() { + u, err := url.Parse("http://bing.com/search?q=dotnet") + if err != nil { + log.Fatal(err) + } + u.Scheme = "https" + u.Host = "google.com" + q := u.Query() + q.Set("q", "golang") + u.RawQuery = q.Encode() + fmt.Println(u) + // Output: https://google.com/search?q=golang +} + +func ExampleURL_roundtrip() { + // Parse + String preserve the original encoding. + u, err := url.Parse("https://example.com/foo%2fbar") + if err != nil { + log.Fatal(err) + } + fmt.Println(u.Path) + fmt.Println(u.RawPath) + fmt.Println(u.String()) + // Output: + // /foo/bar + // /foo%2fbar + // https://example.com/foo%2fbar +} + +func ExampleURL_ResolveReference() { + u, err := url.Parse("../../..//search?q=dotnet") + if err != nil { + log.Fatal(err) + } + base, err := url.Parse("http://example.com/directory/") + if err != nil { + log.Fatal(err) + } + fmt.Println(base.ResolveReference(u)) + // Output: + // http://example.com/search?q=dotnet +} + +func ExampleParseQuery() { + m, err := url.ParseQuery(`x=1&y=2&y=3;z`) + if err != nil { + log.Fatal(err) + } + fmt.Println(toJSON(m)) + // Output: + // {"x":["1"], "y":["2", "3"], "z":[""]} +} + +func ExampleURL_EscapedPath() { + u, err := url.Parse("http://example.com/x/y%2Fz") + if err != nil { + log.Fatal(err) + } + fmt.Println("Path:", u.Path) + fmt.Println("RawPath:", u.RawPath) + fmt.Println("EscapedPath:", u.EscapedPath()) + // Output: + // Path: /x/y/z + // RawPath: /x/y%2Fz + // EscapedPath: /x/y%2Fz +} + +func ExampleURL_EscapedFragment() { + u, err := url.Parse("http://example.com/#x/y%2Fz") + if err != nil { + log.Fatal(err) + } + fmt.Println("Fragment:", u.Fragment) + fmt.Println("RawFragment:", u.RawFragment) + fmt.Println("EscapedFragment:", u.EscapedFragment()) + // Output: + // Fragment: x/y/z + // RawFragment: x/y%2Fz + // EscapedFragment: x/y%2Fz +} + +func ExampleURL_Hostname() { + u, err := url.Parse("https://example.org:8000/path") + if err != nil { + log.Fatal(err) + } + fmt.Println(u.Hostname()) + u, err = url.Parse("https://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:17000") + if err != nil { + log.Fatal(err) + } + fmt.Println(u.Hostname()) + // Output: + // example.org + // 2001:0db8:85a3:0000:0000:8a2e:0370:7334 +} + +func ExampleURL_IsAbs() { + u := url.URL{Host: "example.com", Path: "foo"} + fmt.Println(u.IsAbs()) + u.Scheme = "http" + fmt.Println(u.IsAbs()) + // Output: + // false + // true +} + +func ExampleURL_MarshalBinary() { + u, _ := url.Parse("https://example.org") + b, err := u.MarshalBinary() + if err != nil { + log.Fatal(err) + } + fmt.Printf("%s\n", b) + // Output: + // https://example.org +} + +func ExampleURL_Parse() { + u, err := url.Parse("https://example.org") + if err != nil { + log.Fatal(err) + } + rel, err := u.Parse("/foo") + if err != nil { + log.Fatal(err) + } + fmt.Println(rel) + _, err = u.Parse(":foo") + if _, ok := err.(*url.Error); !ok { + log.Fatal(err) + } + // Output: + // https://example.org/foo +} + +func ExampleURL_Port() { + u, err := url.Parse("https://example.org") + if err != nil { + log.Fatal(err) + } + fmt.Println(u.Port()) + u, err = url.Parse("https://example.org:8080") + if err != nil { + log.Fatal(err) + } + fmt.Println(u.Port()) + // Output: + // + // 8080 +} + +func ExampleURL_Query() { + u, err := url.Parse("https://example.org/?a=1&a=2&b=&=3&&&&") + if err != nil { + log.Fatal(err) + } + q := u.Query() + fmt.Println(q["a"]) + fmt.Println(q.Get("b")) + fmt.Println(q.Get("")) + // Output: + // [1 2] + // + // 3 +} + +func ExampleURL_String() { + u := &url.URL{ + Scheme: "https", + User: url.UserPassword("me", "pass"), + Host: "example.com", + Path: "foo/bar", + RawQuery: "x=1&y=2", + Fragment: "anchor", + } + fmt.Println(u.String()) + u.Opaque = "opaque" + fmt.Println(u.String()) + // Output: + // https://me:pass@example.com/foo/bar?x=1&y=2#anchor + // https:opaque?x=1&y=2#anchor +} + +func ExampleURL_UnmarshalBinary() { + u := &url.URL{} + err := u.UnmarshalBinary([]byte("https://example.org/foo")) + if err != nil { + log.Fatal(err) + } + fmt.Printf("%s\n", u) + // Output: + // https://example.org/foo +} + +func ExampleURL_Redacted() { + u := &url.URL{ + Scheme: "https", + User: url.UserPassword("user", "password"), + Host: "example.com", + Path: "foo/bar", + } + fmt.Println(u.Redacted()) + u.User = url.UserPassword("me", "newerPassword") + fmt.Println(u.Redacted()) + // Output: + // https://user:xxxxx@example.com/foo/bar + // https://me:xxxxx@example.com/foo/bar +} + +func ExampleURL_RequestURI() { + u, err := url.Parse("https://example.org/path?foo=bar") + if err != nil { + log.Fatal(err) + } + fmt.Println(u.RequestURI()) + // Output: /path?foo=bar +} + +func toJSON(m interface{}) string { + js, err := json.Marshal(m) + if err != nil { + log.Fatal(err) + } + return strings.ReplaceAll(string(js), ",", ", ") +} |