summaryrefslogtreecommitdiff
path: root/linkchecker.go
diff options
context:
space:
mode:
Diffstat (limited to 'linkchecker.go')
-rw-r--r--linkchecker.go57
1 files changed, 57 insertions, 0 deletions
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)
+ }
+}