github.com/ck00004/CobaltStrikeParser-Go@v1.0.14/lib/http/httputil/example_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package httputil_test 6 7 import ( 8 "fmt" 9 "io" 10 "log" 11 "strings" 12 13 "github.com/ck00004/CobaltStrikeParser-Go/lib/url" 14 15 "github.com/ck00004/CobaltStrikeParser-Go/lib/http/httputil" 16 17 "github.com/ck00004/CobaltStrikeParser-Go/lib/http" 18 19 "github.com/ck00004/CobaltStrikeParser-Go/lib/http/httptest" 20 ) 21 22 func ExampleDumpRequest() { 23 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 24 dump, err := httputil.DumpRequest(r, true) 25 if err != nil { 26 http.Error(w, fmt.Sprint(err), http.StatusInternalServerError) 27 return 28 } 29 30 fmt.Fprintf(w, "%q", dump) 31 })) 32 defer ts.Close() 33 34 const body = "Go is a general-purpose language designed with systems programming in mind." 35 req, err := http.NewRequest("POST", ts.URL, strings.NewReader(body)) 36 if err != nil { 37 log.Fatal(err) 38 } 39 req.Host = "www.example.org" 40 resp, err := http.DefaultClient.Do(req) 41 if err != nil { 42 log.Fatal(err) 43 } 44 defer resp.Body.Close() 45 46 b, err := io.ReadAll(resp.Body) 47 if err != nil { 48 log.Fatal(err) 49 } 50 51 fmt.Printf("%s", b) 52 53 // Output: 54 // "POST / HTTP/1.1\r\nHost: www.example.org\r\nAccept-Encoding: gzip\r\nContent-Length: 75\r\nUser-Agent: Go-http-client/1.1\r\n\r\nGo is a general-purpose language designed with systems programming in mind." 55 } 56 57 func ExampleDumpRequestOut() { 58 const body = "Go is a general-purpose language designed with systems programming in mind." 59 req, err := http.NewRequest("PUT", "http://www.example.org", strings.NewReader(body)) 60 if err != nil { 61 log.Fatal(err) 62 } 63 64 dump, err := httputil.DumpRequestOut(req, true) 65 if err != nil { 66 log.Fatal(err) 67 } 68 69 fmt.Printf("%q", dump) 70 71 // Output: 72 // "PUT / HTTP/1.1\r\nHost: www.example.org\r\nUser-Agent: Go-http-client/1.1\r\nContent-Length: 75\r\nAccept-Encoding: gzip\r\n\r\nGo is a general-purpose language designed with systems programming in mind." 73 } 74 75 func ExampleDumpResponse() { 76 const body = "Go is a general-purpose language designed with systems programming in mind." 77 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 78 w.Header().Set("Date", "Wed, 19 Jul 1972 19:00:00 GMT") 79 fmt.Fprintln(w, body) 80 })) 81 defer ts.Close() 82 83 resp, err := http.Get(ts.URL) 84 if err != nil { 85 log.Fatal(err) 86 } 87 defer resp.Body.Close() 88 89 dump, err := httputil.DumpResponse(resp, true) 90 if err != nil { 91 log.Fatal(err) 92 } 93 94 fmt.Printf("%q", dump) 95 96 // Output: 97 // "HTTP/1.1 200 OK\r\nContent-Length: 76\r\nContent-Type: text/plain; charset=utf-8\r\nDate: Wed, 19 Jul 1972 19:00:00 GMT\r\n\r\nGo is a general-purpose language designed with systems programming in mind.\n" 98 } 99 100 func ExampleReverseProxy() { 101 backendServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 102 fmt.Fprintln(w, "this call was relayed by the reverse proxy") 103 })) 104 defer backendServer.Close() 105 106 rpURL, err := url.Parse(backendServer.URL) 107 if err != nil { 108 log.Fatal(err) 109 } 110 frontendProxy := httptest.NewServer(httputil.NewSingleHostReverseProxy(rpURL)) 111 defer frontendProxy.Close() 112 113 resp, err := http.Get(frontendProxy.URL) 114 if err != nil { 115 log.Fatal(err) 116 } 117 118 b, err := io.ReadAll(resp.Body) 119 if err != nil { 120 log.Fatal(err) 121 } 122 123 fmt.Printf("%s", b) 124 125 // Output: 126 // this call was relayed by the reverse proxy 127 }