You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
matterbridge/vendor/github.com/42wim/go-gitter
Wim 51062863a5 Use mod vendor for vendored directory (backwards compatible) 6 years ago
..
.gitignore Use mod vendor for vendored directory (backwards compatible) 6 years ago
LICENSE Use github.com/42wim/go-gitter for now 7 years ago
README.md Use mod vendor for vendored directory (backwards compatible) 6 years ago
faye.go Use github.com/42wim/go-gitter for now 7 years ago
gitter.go Use github.com/42wim/go-gitter for now 7 years ago
model.go Use github.com/42wim/go-gitter for now 7 years ago
stream.go Use github.com/42wim/go-gitter for now 7 years ago
test_utils.go Use github.com/42wim/go-gitter for now 7 years ago

README.md

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)

Documentation