Use modularity / up to Exercise 1-12
[goproglang.git] / fetch / fetch.go
index 07125533a36298d5415c3403782fa9b0b49d64e1..2f215686d261edc1aa6ac90603c26789580a77d8 100644 (file)
@@ -1,24 +1,29 @@
 // Fetch prints the content found at a URL.
-package main
+package fetch
 import (
   "fmt"
-  "io/ioutil"
+  "io"
   "net/http"
   "os"
+  "strings"
 )
 func main() {
   for _, url := range os.Args[1:] {
+    if !(strings.HasPrefix(url, "http://")) {
+      url = "http://" + url
+    }
     resp, err := http.Get(url)
     if err != nil {
       fmt.Fprintf(os.Stderr, "fetch: %v\n", err)
       os.Exit(1)
     }
-    b, err := ioutil.ReadAll(resp.Body)
-    resp.Body.Close()
+    _, err = io.Copy(os.Stdout, resp.Body)
+    fmt.Println("\nstatus: " + resp.Status)
     if err != nil {
-      fmt.Fprintf(os.Stderr, "fetch: reading %s: %v\n", url, err)
+      fmt.Fprintf(os.Stderr, "fetch: %v\n", err)
       os.Exit(1)
     }
-    fmt.Printf("%s", b)
+    // b, err := ioutil.ReadAll(resp.Body)
+    resp.Body.Close()
   }
 }