Gitter API in Go
Gitter API in Go https://developer.gitter.im
go get github.com/sromku/go-gitter
api := gitter.New("YOUR_ACCESS_TOKEN")
Get current user
ser, err := api.GetUser()
Get all rooms
ooms, err := api.GetRooms()
Get room by id
oom, err := api.GetRoom("roomID")
Get rooms of some user
ooms, err := api.GetRooms("userID")
Join room
oom, err := api.JoinRoom("roomID", "userID")
Leave room
oom, err := api.LeaveRoom("roomID", "userID")
Get room id
d, err := api.GetRoomId("room/uri")
Search gitter rooms
ooms, err := api.SearchRooms("search/string")
Get messages of room
essages, err := api.GetMessages("roomID", nil)
Get one message
essage, err := api.GetMessage("roomID", "messageID")
Send message
rr := api.SendMessage("roomID", "free chat text")
Create stream to the room and start listening to incoming messages
stream := api.Stream(room.Id)
go api.Listen(stream)
for {
event := <-stream.Event
switch ev := event.Data.(type) {
case *gitter.MessageReceived:
fmt.Println(ev.Message.From.Username + ": " + ev.Message.Text)
case *gitter.GitterConnectionClosed:
// connection was closed
}
}
Close stream connection
stream.Close()
faye := api.Faye(room.ID)
go faye.Listen()
for {
event := <-faye.Event
switch ev := event.Data.(type) {
case *gitter.MessageReceived:
fmt.Println(ev.Message.From.Username + ": " + ev.Message.Text)
case *gitter.GitterConnectionClosed: //this one is never called in Faye
// connection was closed
}
}
You can print the internal errors by enabling debug to true
api.SetDebug(true, nil)
You can also define your own io.Writer
in case you want to persist the logs somewhere.
For example keeping the errors on file
logFile, err := os.Create("gitter.log")
api.SetDebug(true, logFile)
Initialize app engine client and continue as usual
c := appengine.NewContext(r)
client := urlfetch.Client(c)
api := gitter.New("YOUR_ACCESS_TOKEN")
api.SetClient(client)