From 354da79bb2edaa1af7d909d2774e7d67eb4e198c Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 23 Jan 2018 18:17:51 +0100 Subject: Add vendor --- vendor/github.com/fluffle/goirc/client.go | 104 ++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 vendor/github.com/fluffle/goirc/client.go (limited to 'vendor/github.com/fluffle/goirc/client.go') diff --git a/vendor/github.com/fluffle/goirc/client.go b/vendor/github.com/fluffle/goirc/client.go new file mode 100644 index 0000000..b71d706 --- /dev/null +++ b/vendor/github.com/fluffle/goirc/client.go @@ -0,0 +1,104 @@ +package main + +import ( + "bufio" + "flag" + "fmt" + "os" + "strings" + + irc "github.com/fluffle/goirc/client" + "github.com/fluffle/goirc/logging/glog" +) + +var host *string = flag.String("host", "irc.freenode.net", "IRC server") +var channel *string = flag.String("channel", "#go-nuts", "IRC channel") + +func main() { + flag.Parse() + glog.Init() + + // create new IRC connection + c := irc.SimpleClient("GoTest", "gotest") + c.EnableStateTracking() + c.HandleFunc("connected", + func(conn *irc.Conn, line *irc.Line) { conn.Join(*channel) }) + + // Set up a handler to notify of disconnect events. + quit := make(chan bool) + c.HandleFunc("disconnected", + func(conn *irc.Conn, line *irc.Line) { quit <- true }) + + // set up a goroutine to read commands from stdin + in := make(chan string, 4) + reallyquit := false + go func() { + con := bufio.NewReader(os.Stdin) + for { + s, err := con.ReadString('\n') + if err != nil { + // wha?, maybe ctrl-D... + close(in) + break + } + // no point in sending empty lines down the channel + if len(s) > 2 { + in <- s[0 : len(s)-1] + } + } + }() + + // set up a goroutine to do parsey things with the stuff from stdin + go func() { + for cmd := range in { + if cmd[0] == ':' { + switch idx := strings.Index(cmd, " "); { + case cmd[1] == 'd': + fmt.Printf(c.String()) + case cmd[1] == 'n': + parts := strings.Split(cmd, " ") + username := strings.TrimSpace(parts[1]) + channelname := strings.TrimSpace(parts[2]) + _, userIsOn := c.StateTracker().IsOn(channelname, username) + fmt.Printf("Checking if %s is in %s Online: %t\n", username, channelname, userIsOn) + case cmd[1] == 'f': + if len(cmd) > 2 && cmd[2] == 'e' { + // enable flooding + c.Config().Flood = true + } else if len(cmd) > 2 && cmd[2] == 'd' { + // disable flooding + c.Config().Flood = false + } + for i := 0; i < 20; i++ { + c.Privmsg("#", "flood test!") + } + case idx == -1: + continue + case cmd[1] == 'q': + reallyquit = true + c.Quit(cmd[idx+1 : len(cmd)]) + case cmd[1] == 's': + reallyquit = true + c.Close() + case cmd[1] == 'j': + c.Join(cmd[idx+1 : len(cmd)]) + case cmd[1] == 'p': + c.Part(cmd[idx+1 : len(cmd)]) + } + } else { + c.Raw(cmd) + } + } + }() + + for !reallyquit { + // connect to server + if err := c.ConnectTo(*host); err != nil { + fmt.Printf("Connection error: %s\n", err) + return + } + + // wait on quit channel + <-quit + } +} -- cgit v1.2.3