From 1e8e8914e35ab721276727d38425770a6165eafa Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 22 Mar 2016 01:08:10 +0100 Subject: Cleanup --- href.go | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) (limited to 'href.go') diff --git a/href.go b/href.go index d06d04c..3f25700 100644 --- a/href.go +++ b/href.go @@ -13,18 +13,9 @@ import ( "golang.org/x/net/html/charset" ) -var ( - errNotHTML = errors.New("not HTML content") - errTooBig = errors.New("content too big") - errIconv = errors.New("charset converter error") -) - -const ( - MB = 1024 * 1024 - maxLen = 500 // approx 510 - len("Title: ") -) +var errNotHTML = errors.New("not HTML content") -func findTitle(n *html.Node) (s string) { +func title(n *html.Node) (s string) { if n.Type == html.ElementNode && n.Data == "title" { for c := n.FirstChild; c != nil; c = c.NextSibling { s += c.Data @@ -32,14 +23,14 @@ func findTitle(n *html.Node) (s string) { return strings.TrimSpace(s) } for c := n.FirstChild; c != nil; c = c.NextSibling { - if t := findTitle(c); t != "" { + if t := title(c); t != "" { return t } } return "" } -func FetchTitle(uri string) (string, error) { +func findTitle(uri string) (string, error) { client := &http.Client{} if strings.Contains(uri, "reddit") { u, _ := url.Parse(uri) @@ -63,13 +54,9 @@ func FetchTitle(uri string) (string, error) { return "", errNotHTML } - if resp.ContentLength > 8*MB { - return "", errTooBig - } - r, err := charset.NewReader(resp.Body, ct) if err != nil { - return "", errIconv + return "", err } doc, err := html.Parse(r) @@ -77,13 +64,7 @@ func FetchTitle(uri string) (string, error) { return "", err } - title := findTitle(doc) - - if len(title) > maxLen { - title = title[:maxLen] + "..." - } - - return title, nil + return title(doc), nil } func ExtractLinks(conn *irc.Conn, line *irc.Line) { @@ -95,11 +76,14 @@ func ExtractLinks(conn *irc.Conn, line *irc.Line) { case strings.HasPrefix(v, "http"): go func(uri string) { log.Println(line.Nick, uri) - t, err := FetchTitle(uri) + t, err := findTitle(uri) if err != nil { log.Println(err) } if t != "" { + if len(t) > 500 { + t = t[:500] + "..." + } conn.Notice(line.Target(), "Title: "+t) } }(v) -- cgit v1.2.3