项目作者: sromku

项目描述 :
Gitter API in Go
高级语言: Go
项目地址: git://github.com/sromku/go-gitter.git
创建时间: 2016-01-09T06:40:27Z
项目社区:https://github.com/sromku/go-gitter

开源协议:Apache License 2.0

下载


gitter

Gitter API in Go
https://developer.gitter.im

Install

go get github.com/sromku/go-gitter

Initialize
  1. api := gitter.New("YOUR_ACCESS_TOKEN")
Users
  • Get current user

    1. user, err := api.GetUser()
Rooms
  • Get all rooms

    1. rooms, err := api.GetRooms()
  • Get room by id

    1. room, err := api.GetRoom("roomID")
  • Get rooms of some user

    1. rooms, err := api.GetRooms("userID")
  • Join room

    1. room, err := api.JoinRoom("roomID", "userID")
  • Leave room

    1. room, err := api.LeaveRoom("roomID", "userID")
  • Get room id

    1. id, err := api.GetRoomId("room/uri")
  • Search gitter rooms

    1. rooms, err := api.SearchRooms("search/string")
    Messages
  • Get messages of room

    1. messages, err := api.GetMessages("roomID", nil)
  • Get one message

    1. message, err := api.GetMessage("roomID", "messageID")
  • Send message

    1. err := api.SendMessage("roomID", "free chat text")
Stream

Create stream to the room and start listening to incoming messages

  1. stream := api.Stream(room.Id)
  2. go api.Listen(stream)
  3. for {
  4. event := <-stream.Event
  5. switch ev := event.Data.(type) {
  6. case *gitter.MessageReceived:
  7. fmt.Println(ev.Message.From.Username + ": " + ev.Message.Text)
  8. case *gitter.GitterConnectionClosed:
  9. // connection was closed
  10. }
  11. }

Close stream connection

  1. stream.Close()
Faye (Experimental)
  1. faye := api.Faye(room.ID)
  2. go faye.Listen()
  3. for {
  4. event := <-faye.Event
  5. switch ev := event.Data.(type) {
  6. case *gitter.MessageReceived:
  7. fmt.Println(ev.Message.From.Username + ": " + ev.Message.Text)
  8. case *gitter.GitterConnectionClosed: //this one is never called in Faye
  9. // connection was closed
  10. }
  11. }
Debug

You can print the internal errors by enabling debug to true

  1. 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

  1. logFile, err := os.Create("gitter.log")
  2. api.SetDebug(true, logFile)
App Engine

Initialize app engine client and continue as usual

  1. c := appengine.NewContext(r)
  2. client := urlfetch.Client(c)
  3. api := gitter.New("YOUR_ACCESS_TOKEN")
  4. api.SetClient(client)

Documentation