Skip to content

bmorton/go-yammer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-yammer

This is a very early, WIP Golang implementation of the essentials required to post messages to a Yammer network and monitoring a realtime stream for updates. Don't depend on this library for anything important yet.

Example

package main

import (
	"log"

	"github.com/bmorton/go-yammer/cometd"
	"github.com/bmorton/go-yammer/schema"
	"github.com/bmorton/go-yammer/yammer"
)

func main() {
	client := yammer.New("your-token-here")
	groupId := 12345

	feed, err := client.GroupFeed(groupId)
	if err != nil {
		log.Println(err)
		return
	}

	rt := cometd.New(feed.Meta.Realtime.URI, feed.Meta.Realtime.AuthenticationToken)
	err = rt.Handshake()
	if err != nil {
		log.Println(err)
		return
	}

	err = rt.Subscribe(feed.Meta.Realtime.ChannelId)
	if err != nil {
		log.Println(err)
		return
	}

	messageChan := make(chan *schema.MessageFeed, 10)
	stopChan := make(chan bool, 1)

	log.Printf("Polling group ID: %d\n", groupId)
	go rt.Poll(messageChan, stopChan)
	for {
		select {
		case m := <-messageChan:
			message := m.Messages[0]
			if message.IsThreadStarter() {
				log.Printf("[%d] %s", message.SenderId, message.Body.Plain)
			}
		}
	}
}

About

A (WIP) Golang library for posting messages to Yammer and monitoring the realtime stream for group updates

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages