From f810ea0e282614c0ae51d44677a8fbbb7fca5a53 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 19 Mar 2015 14:05:23 +0100 Subject: Initial import --- linkchecker.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 linkchecker.go diff --git a/linkchecker.go b/linkchecker.go new file mode 100644 index 0000000..81abe96 --- /dev/null +++ b/linkchecker.go @@ -0,0 +1,57 @@ +package main + +import ( + "bufio" + "flag" + "fmt" + "log" + "net/http" + "os" + "sync" + "text/tabwriter" +) + +var list = flag.String("list", "sitemap.txt", "Link list file") + +func fetchStatus(url string) string { + resp, err := http.Get(url) + if err != nil { + log.Fatal(err) + } + defer resp.Body.Close() + return resp.Status +} + +func readList(file string) (s []string) { + fd, err := os.Open(file) + if err != nil { + log.Fatal(err) + } + defer fd.Close() + + scanner := bufio.NewScanner(fd) + for scanner.Scan() { + s = append(s, scanner.Text()) + } + + return s +} + +func main() { + flag.Parse() + + wg := new(sync.WaitGroup) + defer wg.Wait() + + w := new(tabwriter.Writer) + w.Init(os.Stdout, 16, 8, 0, '\t', 0) + + for _, url := range readList(*list) { + wg.Add(1) + go func(url string) { + defer wg.Done() + fmt.Fprintf(w, "%s\t%s\n", fetchStatus(url), url) + w.Flush() + }(url) + } +} -- cgit v1.2.3