mirror of
https://github.com/muesli/telephant
synced 2024-11-23 11:53:12 +00:00
72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"regexp"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/davecgh/go-spew/spew"
|
||
|
|
||
|
"github.com/muesli/chirp/accounts"
|
||
|
)
|
||
|
|
||
|
func linkify(in []byte) []byte {
|
||
|
return []byte(fmt.Sprintf("<a href=\"%s\">%s</a>", in, in))
|
||
|
}
|
||
|
|
||
|
// handleEvents handles incoming events and puts them into the right models
|
||
|
func handleEvents(eventsIn chan interface{}, messages *MessageModel, notifications *MessageModel) {
|
||
|
for {
|
||
|
ev, ok := <-eventsIn
|
||
|
if !ok {
|
||
|
log.Println()
|
||
|
log.Println("Stopped event handler!")
|
||
|
break
|
||
|
}
|
||
|
|
||
|
switch event := ev.(type) {
|
||
|
case accounts.LoginEvent:
|
||
|
{
|
||
|
log.Println("Twitter login succeeded:", event.Username, event.Name, event.Avatar)
|
||
|
accountBridge.SetUsername(event.Username)
|
||
|
accountBridge.SetAvatar(event.Avatar)
|
||
|
}
|
||
|
case accounts.MessageEvent:
|
||
|
{
|
||
|
spw := &spew.ConfigState{Indent: " ", DisableCapacities: true, DisablePointerAddresses: true}
|
||
|
log.Println("Message received:", spw.Sdump(event))
|
||
|
|
||
|
var p = NewMessage(nil)
|
||
|
p.MessageID = event.Post.MessageID
|
||
|
p.Name = event.Post.AuthorName
|
||
|
p.Author = event.Post.Author
|
||
|
p.Avatar = event.Post.Avatar
|
||
|
p.Body = strings.TrimSpace(event.Post.Body)
|
||
|
p.CreatedAt = event.Post.CreatedAt
|
||
|
p.Reply = event.Reply
|
||
|
p.ReplyToID = event.Post.ReplyToID
|
||
|
p.ReplyToAuthor = event.Post.ReplyToAuthor
|
||
|
p.Mention = event.Mention
|
||
|
p.Like = event.Like
|
||
|
p.Forward = event.Forward
|
||
|
p.Actor = event.Post.Actor
|
||
|
p.ActorName = event.Post.ActorName
|
||
|
|
||
|
// markup links
|
||
|
re, err := regexp.Compile(`https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]{2,16}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)`)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
p.Body = string(re.ReplaceAllFunc([]byte(p.Body), linkify))
|
||
|
|
||
|
if event.Notification {
|
||
|
notifications.AddMessage(p)
|
||
|
} else {
|
||
|
messages.AddMessage(p)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|