summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-12-20 23:05:09 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-12-20 23:05:09 +0100
commit5fe432b7c1d6d626699e8091005a0de788d8168a (patch)
tree527f059bd7c902a8bafb5c64a989e86001d92db4
parent6cdda9594a16182816a862fb253ec8ccecf763f0 (diff)
links
-rw-r--r--blame.go26
-rw-r--r--duck.go28
-rw-r--r--help.go29
-rw-r--r--href.go38
-rw-r--r--href_test.go2
-rw-r--r--main.go2
-rw-r--r--urban.go33
7 files changed, 23 insertions, 135 deletions
diff --git a/blame.go b/blame.go
deleted file mode 100644
index 094a45f..0000000
--- a/blame.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package main
-
-import (
- irc "github.com/fluffle/goirc/client"
-)
-
-type Blame struct{}
-
-func (Blame) Handle(conn *irc.Conn, line *irc.Line) {
- src := []string{
- "Author: Dimitri Sokolyuk <demon@dim13.org>",
- "Source: http://git.dim13.org/bot.git",
- "Install: go get dim13.org/bot",
- }
- for _, s := range src {
- conn.Notice(line.Nick, s)
- }
-}
-
-func (Blame) String() string {
- return "Blame author and return link to source code"
-}
-
-func init() {
- Register("blame", &Blame{})
-}
diff --git a/duck.go b/duck.go
deleted file mode 100644
index 7900cc0..0000000
--- a/duck.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package main
-
-import (
- "strings"
-
- "dim13.org/duck"
- irc "github.com/fluffle/goirc/client"
-)
-
-type Duck struct{}
-
-func (Duck) Handle(conn *irc.Conn, line *irc.Line) {
- if q := strings.SplitN(line.Text(), " ", 2); len(q) == 2 {
- if a, err := duck.Abstract(q[1]); err != nil {
- conn.Notice(line.Target(), err.Error())
- } else {
- conn.Notice(line.Target(), a)
- }
- }
-}
-
-func (Duck) String() string {
- return "Perform duckduckgo instant answer search"
-}
-
-func init() {
- Register("define", &Duck{})
-}
diff --git a/help.go b/help.go
deleted file mode 100644
index f6cf4c5..0000000
--- a/help.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package main
-
-import (
- "fmt"
- "sort"
-
- irc "github.com/fluffle/goirc/client"
-)
-
-type Help struct{}
-
-func (Help) Handle(conn *irc.Conn, line *irc.Line) {
- var msg []string
- for k, v := range commands {
- msg = append(msg, fmt.Sprintf("%-8s%v", k, v))
- }
- sort.Sort(sort.StringSlice(msg))
- for _, s := range msg {
- conn.Notice(line.Nick, s)
- }
-}
-
-func (Help) String() string {
- return "This help"
-}
-
-func init() {
- Register("help", &Help{})
-}
diff --git a/href.go b/href.go
index 0799fad..e1a687b 100644
--- a/href.go
+++ b/href.go
@@ -28,7 +28,7 @@ func title(n *html.Node) (s string) {
return ""
}
-func findTitle(uri string) (string, error) {
+func getTitle(uri string) (string, error) {
resp, err := http.Get(uri)
if err != nil {
return "", err
@@ -53,26 +53,30 @@ func findTitle(uri string) (string, error) {
return title(doc), nil
}
-func ExtractLinks(conn *irc.Conn, line *irc.Line) {
- for _, v := range strings.Fields(line.Text()) {
+func links(s string) (ret []string) {
+ for _, v := range strings.Fields(s) {
switch {
case strings.HasPrefix(v, "www"):
v = "http://" + v
fallthrough
- case strings.HasPrefix(v, "http"):
- go func(uri string) {
- log.Println(line.Nick, uri)
- t, err := findTitle(uri)
- if err != nil {
- log.Println(err)
- }
- if t != "" {
- if len(t) > maxLen {
- t = t[:maxLen] + "..."
- }
- conn.Notice(line.Target(), "Title: "+t)
- }
- }(v)
+ case strings.HasPrefix(v, "http:"), strings.HasPrefix(v, "https:"):
+ ret = append(ret, v)
+ }
+ }
+ 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] + "..."
+ }
+ conn.Notice(line.Target(), "Title: "+t)
}
}
}
diff --git a/href_test.go b/href_test.go
index d884b2f..4134d47 100644
--- a/href_test.go
+++ b/href_test.go
@@ -26,7 +26,7 @@ func TestTitle(t *testing.T) {
}
for _, tc := range testCases {
t.Run(tc.URL, func(t *testing.T) {
- title, err := findTitle(tc.URL)
+ title, err := getTitle(tc.URL)
if err != nil {
t.Error(tc.URL, err)
}
diff --git a/main.go b/main.go
index 84b0d6b..9dcf9d6 100644
--- a/main.go
+++ b/main.go
@@ -32,7 +32,7 @@ func main() {
c.HandleFunc(irc.PRIVMSG, func(conn *irc.Conn, line *irc.Line) {
go Dispatch(conn, line)
- go ExtractLinks(conn, line)
+ go Links(conn, line)
if line.Public() && line.Nick != conn.Me().Nick {
if isFlood(line.Text()) {
log.Println("flood", line.Nick)
diff --git a/urban.go b/urban.go
deleted file mode 100644
index 97fa4ff..0000000
--- a/urban.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package main
-
-import (
- "fmt"
- "strings"
-
- "dim13.org/urban"
- irc "github.com/fluffle/goirc/client"
-)
-
-type Urban struct{}
-
-func (Urban) Handle(conn *irc.Conn, line *irc.Line) {
- if q := strings.SplitN(line.Text(), " ", 2); len(q) == 2 {
- if u, err := urban.QueryTop(q[1]); err != nil {
- conn.Notice(line.Target(), err.Error())
- } else {
- if len(u.Definition) > maxLen {
- u.Definition = u.Definition[:maxLen] + "..."
- }
- s := fmt.Sprintf("%v: %v", u.Word, u.Definition)
- conn.Notice(line.Target(), s)
- }
- }
-}
-
-func (Urban) String() string {
- return "Perform urban dictionary search"
-}
-
-func init() {
- Register("urban", &Urban{})
-}