From ab65e05ac72a2370ad27b865f5eab88fd4908942 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 12 Jul 2015 13:43:32 +0200 Subject: Add link caching --- href.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'href.go') diff --git a/href.go b/href.go index 3a9239f..44a6efb 100644 --- a/href.go +++ b/href.go @@ -3,10 +3,13 @@ package main import ( "net/http" "strings" + "fmt" "golang.org/x/net/html" ) +var cache = make(map[string]string) + func findTitle(n *html.Node) (s string) { if n.Type == html.ElementNode && n.Data == "title" { for c := n.FirstChild; c != nil; c = c.NextSibling { @@ -23,6 +26,10 @@ func findTitle(n *html.Node) (s string) { } func FetchTitle(url string) (string, error) { + if title, ok := cache[url]; ok { + return title, nil + } + resp, err := http.Get(url) if err != nil { return "", err @@ -34,5 +41,16 @@ func FetchTitle(url string) (string, error) { return "", err } - return findTitle(doc), nil + title := findTitle(doc) + cache[url] = title + + return title, nil +} + +func showLinks() (s string) { + for k, v := range cache { + s += fmt.Sprintf("%v (%v) ", k, v) + } + return + } -- cgit v1.2.3