added more conditions

This commit is contained in:
Karmanyaah Malhotra 2021-03-05 00:43:05 -05:00
parent c5d6c8a29c
commit b6715c2375
4 changed files with 57 additions and 13 deletions

View File

@ -69,7 +69,7 @@ func (h Handler) HandleError(e error) {
}
func (h Handler) HandleTextMessage(msg groupme.Message) {
fmt.Println(msg.Text, msg.Name)
fmt.Println(msg.Text, msg.Name, msg.Attachments)
}
func (h Handler) HandleJoin(group groupme.ID) {
@ -113,3 +113,12 @@ func (h Handler) HandleNewAvatarInGroup(group groupme.ID, user groupme.ID, avata
}
fmt.Printf("In group %s, user %s has new avatar with url %s\n", group.String(), user.String(), avatarURL)
}
func (h Handler) HandleMembers(group groupme.ID, members []groupme.Member, added bool) {
action := "removed"
if added {
action = "added"
}
fmt.Printf("In group %s, users %v %s\n", group.String(), members, action)
}

2
go.mod
View File

@ -7,6 +7,6 @@ go 1.15
require (
github.com/google/uuid v1.2.0
github.com/gorilla/mux v1.8.0
github.com/karmanyaahm/wray v0.0.0-20160519030252-f36984f6648c
github.com/karmanyaahm/wray v0.0.0-20210303233435-756d58657c14
github.com/stretchr/testify v1.7.0
)

4
go.sum
View File

@ -9,6 +9,10 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/karmanyaahm/wray v0.0.0-20160519030252-f36984f6648c h1:K6LcMJIgTvSTgi77TUeD7qx7Vq5lEYRKTYSTp5WPMH4=
github.com/karmanyaahm/wray v0.0.0-20160519030252-f36984f6648c/go.mod h1:LqTl7/Bd5gKDCT0UI3kbfgjCcr1caZHsNk0PZ7bZid8=
github.com/karmanyaahm/wray v0.0.0-20210303233435-756d58657c14 h1:NrATjZKvkY+ojL8FXTWa3fQ+wihFrAxLNE6T+wOkIcY=
github.com/karmanyaahm/wray v0.0.0-20210303233435-756d58657c14/go.mod h1:ysD86MIEevmAkdfdg5s6Qt3I07RN6fvMAyna7jCGG2o=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=

View File

@ -77,6 +77,9 @@ type HandleGroupMetadata interface {
type HandleGroupMembership interface {
HandleNewNickname(group ID, user ID, newName string)
HandleNewAvatarInGroup(group ID, user ID, avatarURL string)
//HandleNewMembers returns only partial member with id and nickname; added is false if removing
HandleMembers(group ID, members []Member, added bool)
}
//PushSubscription manages real time subscription
@ -133,7 +136,10 @@ func (r *PushSubscription) StartListening(context context.Context) {
channel := msg.Channel()
if strings.HasPrefix(channel, groupChannel) || strings.HasPrefix(channel, dmChannel) {
r.chatEvent(contentType, content)
c := content.(map[string]interface{})["line"]
d, _ := json.Marshal(c)
r.chatEvent(contentType, d)
continue
}
switch contentType {
@ -190,25 +196,19 @@ func (r *PushSubscription) StartListening(context context.Context) {
}()
}
func (r *PushSubscription) chatEvent(contentType string, content interface{}) {
func (r *PushSubscription) chatEvent(contentType string, b []byte) {
switch contentType {
case "favorite":
b, ok := content.(map[string]interface{})["line"].(Message)
if !ok {
log.Println(content)
}
data := Message{}
_ = json.Unmarshal(b, &data)
for _, h := range r.handlers {
if h, ok := h.(HandlerLike); ok {
h.HandleLike(b.UserID, b.FavoritedBy)
h.HandleLike(data.ID, data.FavoritedBy)
}
}
break
default: //TODO: see if any other types are returned
println("HEHE")
log.Println(contentType)
b, _ := json.Marshal(content)
log.Fatalln(string(b))
}
@ -248,6 +248,31 @@ func (r *PushSubscription) systemEvent(groupID ID, msg systemMessage) {
}
}
break
case "membership.announce.added":
data := struct {
Added []Member `json:"added_users"`
}{}
_ = json.Unmarshal(b, &data)
for _, h := range r.handlers {
if h, ok := h.(HandleGroupMembership); ok {
h.HandleMembers(groupID, data.Added, true)
}
}
break
case "membership.notifications.removed":
data := struct {
Added Member `json:"removed_user"`
}{}
_ = json.Unmarshal(b, &data)
for _, h := range r.handlers {
if h, ok := h.(HandleGroupMembership); ok {
h.HandleMembers(groupID, []Member{data.Added}, false)
}
}
break
case "group.role_change_admin":
//TODO
break
case "group.name_change":
data := struct {
Name string
@ -307,6 +332,12 @@ func (r *PushSubscription) systemEvent(groupID ID, msg systemMessage) {
}
}
break
case "group.type_change", "group.required_approval_enabled", "group.required_approval_disabled":
//TODO: group joining
break
case "group.shared", "group.unshared":
//TODO
break
default:
log.Println(kind)
log.Fatalln(string(b))