| package main |
| |
| import ( |
| "http" |
| "flag" |
| "fmt" |
| "io" |
| "log" |
| "net" |
| "os" |
| "strings" |
| ) |
| |
| var ( |
| post = flag.String("post", "", "urlencoded form data to POST") |
| addr = flag.Bool("addr", false, "find open address and print to stdout") |
| ) |
| |
| func main() { |
| flag.Parse() |
| if *addr { |
| l, err := net.Listen("tcp", "127.0.0.1:0") |
| if err != nil { |
| log.Fatal(err) |
| } |
| defer l.Close() |
| fmt.Print(l.Addr()) |
| return |
| } |
| url := flag.Arg(0) |
| if url == "" { |
| log.Fatal("no url supplied") |
| } |
| var r *http.Response |
| var err os.Error |
| if *post != "" { |
| b := strings.NewReader(*post) |
| r, err = http.Post(url, "application/x-www-form-urlencoded", b) |
| } else { |
| r, _, err = http.Get(url) |
| } |
| if err != nil { |
| log.Fatal(err) |
| } |
| defer r.Body.Close() |
| _, err = io.Copy(os.Stdout, r.Body) |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |