]> Cypherpunks repositories - gostls13.git/commitdiff
net/url: add example of using URL.Opaque with http.Request
authorBrad Fitzpatrick <bradfitz@golang.org>
Wed, 12 Nov 2014 22:27:27 +0000 (14:27 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 12 Nov 2014 22:27:27 +0000 (14:27 -0800)
Per private thread soliciting help. I realized part of this is
documented in several places, but we lacked a unifying
example.

LGTM=rsc
R=golang-codereviews
CC=adg, golang-codereviews, iant, rsc
https://golang.org/cl/171620043

src/net/url/example_test.go

index 56c5dc696a20e747c140c62a0536c65023d18397..e55c1aa166ea5ceab78004c87cae3fdb0f4f9816 100644 (file)
@@ -7,7 +7,10 @@ package url_test
 import (
        "fmt"
        "log"
+       "net/http"
+       "net/http/httputil"
        "net/url"
+       "strings"
 )
 
 func ExampleValues() {
@@ -39,3 +42,30 @@ func ExampleURL() {
        fmt.Println(u)
        // Output: https://google.com/search?q=golang
 }
+
+func ExampleURL_opaque() {
+       // Sending a literal '%' in an HTTP request's Path
+       req := &http.Request{
+               Method: "GET",
+               Host:   "example.com", // takes precendence over URL.Host
+               URL: &url.URL{
+                       Host:   "ignored",
+                       Scheme: "https",
+                       Opaque: "/%2f/",
+               },
+               Header: http.Header{
+                       "User-Agent": {"godoc-example/0.1"},
+               },
+       }
+       out, err := httputil.DumpRequestOut(req, true)
+       if err != nil {
+               log.Fatal(err)
+       }
+       fmt.Println(strings.Replace(string(out), "\r", "", -1))
+       // Output:
+       // GET /%2f/ HTTP/1.1
+       // Host: example.com
+       // User-Agent: godoc-example/0.1
+       // Accept-Encoding: gzip
+       //
+}