matterbridge/vendor/github.com/42wim/go-gitter/README.md

2.6 KiB

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 Go rooms, err := api.GetRooms()

  • Get room by id Go room, err := api.GetRoom("roomID")

  • Get rooms of some user Go rooms, err := api.GetRooms("userID")

  • Join room Go room, err := api.JoinRoom("roomID", "userID")

  • Leave room Go room, err := api.LeaveRoom("roomID", "userID")

  • Get room id Go id, err := api.GetRoomId("room/uri")

  • Search gitter rooms Go rooms, err := api.SearchRooms("search/string") ##### Messages

  • Get messages of room Go messages, err := api.GetMessages("roomID", nil)

  • Get one message Go message, err := api.GetMessage("roomID", "messageID")

  • Send message Go 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)

Documentation