groupme-lib/examples/real_time_updates/main.go

132 lines
3.3 KiB
Go
Raw Normal View History

2021-01-29 04:47:48 +00:00
package main
import (
"context"
"fmt"
2021-03-05 05:47:47 +00:00
"log"
"os"
2021-01-29 04:47:48 +00:00
"github.com/densestvoid/groupme"
)
// This is not a real token. Please find yours by logging
// into the GroupMe development website: https://dev.groupme.com/
//var authorizationToken = "ABCD"
var authorizationToken = "aa608b00a46401385ead62dd938575cf"
2021-01-29 04:47:48 +00:00
// A short program that gets the gets the first 5 groups
// the user is part of, and then the first 10 messages of
// the first group in that list
func main() {
// Create a new client with your auth token
client := groupme.NewClient(authorizationToken)
// Get the groups your user is part of
groups, err := client.IndexGroups(
context.Background(),
&groupme.GroupsQuery{
Page: 0,
PerPage: 1,
2021-01-29 04:47:48 +00:00
Omit: "memberships",
},
)
if err != nil {
fmt.Println(err)
return
}
// Get first 10 messages of the first group
if len(groups) == 0 {
fmt.Println("No groups")
os.Exit(1)
2021-01-29 04:47:48 +00:00
}
p := groupme.NewPushSubscription(context.Background())
go p.StartListening(context.TODO())
2021-01-29 04:47:48 +00:00
client = groupme.NewClient(authorizationToken)
2021-01-29 04:47:48 +00:00
User, _ := client.MyUser(context.Background())
2021-03-05 05:47:47 +00:00
err = p.SubscribeToUser(context.Background(), User.ID, authorizationToken)
if err != nil {
log.Fatal(err)
}
2021-01-29 04:47:48 +00:00
for _, j := range groups {
2021-03-05 05:47:47 +00:00
err = p.SubscribeToGroup(context.TODO(), j.ID, authorizationToken)
if err != nil {
log.Fatal(err)
}
}
p.AddFullHandler(Handler{User: User})
2021-01-29 04:47:48 +00:00
<-make(chan (struct{}))
}
2021-01-29 04:47:48 +00:00
type Handler struct {
User *groupme.User
}
2021-01-29 04:47:48 +00:00
func (h Handler) HandleError(e error) {
fmt.Println(e)
}
func (h Handler) HandleTextMessage(msg groupme.Message) {
2021-03-05 05:43:05 +00:00
fmt.Println(msg.Text, msg.Name, msg.Attachments)
}
func (h Handler) HandleJoin(group groupme.ID) {
fmt.Println("User joined group with id", group.String())
}
func (h Handler) HandleLike(id groupme.ID, by []string) {
fmt.Println(id.String(), "liked by", by)
}
func (h Handler) HandlerMembership(i groupme.ID) {
fmt.Println("Membership event on", i.String())
}
func (h Handler) HandleGroupTopic(group groupme.ID, newTopic string) {
fmt.Println(group.String(), "has new topic of", newTopic)
}
func (h Handler) HandleGroupName(group groupme.ID, newName string) {
fmt.Println(group.String(), "has new name of", newName)
}
func (h Handler) HandleGroupAvatar(group groupme.ID, newAvatar string) {
fmt.Println(group.String(), "has new avatar url of", newAvatar)
}
func (h Handler) HandleLikeIcon(group groupme.ID, PackID, PackIndex int, Type string) {
//Not sure how to use without groupme icon packs
if len(Type) == 0 {
fmt.Println("Default like icon set")
return
2021-01-29 04:47:48 +00:00
}
fmt.Println(group.String(), "has new like icon of", PackID, PackIndex, Type)
}
2021-01-29 04:47:48 +00:00
func (h Handler) HandleNewNickname(group groupme.ID, user groupme.ID, newName string) {
fmt.Printf("In group %s, user %s has new nickname %s\n", group.String(), user.String(), newName)
}
func (h Handler) HandleNewAvatarInGroup(group groupme.ID, user groupme.ID, avatarURL string) {
if avatarURL == "" {
//get default avatar
avatarURL = h.User.ImageURL
}
fmt.Printf("In group %s, user %s has new avatar with url %s\n", group.String(), user.String(), avatarURL)
2021-01-29 04:47:48 +00:00
}
2021-03-05 05:43:05 +00:00
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)
}