mirror of
https://github.com/42wim/matterbridge.git
synced 2024-11-21 10:12:00 -08:00
.. | ||
.gitignore | ||
faye.go | ||
gitter.go | ||
LICENSE | ||
model.go | ||
README.md | ||
stream.go | ||
test_utils.go |
gitter
Gitter API in Go https://developer.gitter.im
Install
go get github.com/sromku/go-gitter
Initialize
api := gitter.New("YOUR_ACCESS_TOKEN")
Users
-
Get current user
user, err := api.GetUser()
Rooms
-
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")
Messages
-
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")
Stream
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 (Experimental)
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
}
}
Debug
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)
App Engine
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)