Go Gitter Save

Gitter API in Go

Project README

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

    ser, err := api.GetUser()
    
Rooms
  • 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")
    
Messages
  • 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")
    
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

Open Source Agenda is not affiliated with "Go Gitter" Project. README Source: sromku/go-gitter
Stars
56
Open Issues
0
Last Commit
6 years ago
Repository
License

Open Source Agenda Badge

Open Source Agenda Rating