Gitter API in Go https://developer.gitter.im
go get github.com/sromku/go-gitter
api := gitter.New("YOUR_ACCESS_TOKEN")
-
Get current user
user, err := api.GetUser()
-
Get all rooms
rooms, err := api.GetRooms()
-
Get room by id
room, err := api.GetRoom("roomID")
-
Get rooms of some user
rooms, err := api.GetRooms("userID")
-
Join room
room, err := api.JoinRoom("roomID", "userID")
-
Leave room
room, err := api.LeaveRoom("roomID", "userID")
-
Get room id
id, err := api.GetRoomId("room/uri")
-
Search gitter rooms
rooms, err := api.SearchRooms("search/string")
-
Get messages of room
messages, err := api.GetMessages("roomID", nil)
-
Get one message
message, err := api.GetMessage("roomID", "messageID")
-
Send message
err := 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)