summaryrefslogtreecommitdiff
path: root/href.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-12-21 00:25:57 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-12-21 00:25:57 +0100
commit429466e258c9228483ae8928f66fd52cec1178eb (patch)
tree88ce4ef7bd4261cf558e6944399595bf7eab3c47 /href.go
parent91d96257792d34ef8af6027d70775b8bc376618f (diff)
privmsg
Diffstat (limited to 'href.go')
-rw-r--r--href.go31
1 files changed, 16 insertions, 15 deletions
diff --git a/href.go b/href.go
index 918a2f2..5efa71c 100644
--- a/href.go
+++ b/href.go
@@ -2,19 +2,17 @@ package main
import (
"errors"
+ "fmt"
"log"
"net/http"
"strings"
- irc "github.com/fluffle/goirc/client"
"golang.org/x/net/html"
"golang.org/x/net/html/charset"
)
var errNotHTML = errors.New("not HTML content")
-const maxLen = 500
-
func title(n *html.Node) (s string) {
if n.Type == html.ElementNode && n.Data == "title" {
for c := n.FirstChild; c != nil; c = c.NextSibling {
@@ -55,7 +53,7 @@ func getTitle(uri string) (string, error) {
return title(doc), nil
}
-func links(s string) (ret []string) {
+func getLinks(s string) (ret []string) {
for _, v := range strings.Fields(s) {
switch {
case strings.HasPrefix(v, "www"):
@@ -68,17 +66,20 @@ func links(s string) (ret []string) {
return
}
-func Links(conn *irc.Conn, line *irc.Line) {
- for _, v := range links(line.Text()) {
- t, err := getTitle(v)
- if err != nil {
- log.Println(err)
- }
- if t != "" {
- if len(t) > maxLen {
- t = t[:maxLen] + "..."
+func links(msg chan string) chan string {
+ c := make(chan string)
+ go func() {
+ for l := range c {
+ for _, v := range getLinks(l) {
+ t, err := getTitle(v)
+ if err != nil {
+ log.Println(err)
+ }
+ if t != "" {
+ msg <- fmt.Sprint("Title:", t)
+ }
}
- conn.Notice(line.Target(), "Title: "+t)
}
- }
+ }()
+ return c
}