Skip to content

Instantly share code, notes, and snippets.

@1syo
Last active November 6, 2015 14:59
Show Gist options
  • Save 1syo/47ed4c31d90c7609b346 to your computer and use it in GitHub Desktop.
Save 1syo/47ed4c31d90c7609b346 to your computer and use it in GitHub Desktop.
# Description:
# Yammer messege.
#
YAMMER_USER_ID = process.env.YAMMER_USER_ID || 0
YAMMER_API_TOKEN = process.env.YAMMER_API_TOKEN || ""
ROOM_NAME = process.env.ROOM_NAME || "general"
KEY = 'yammer-latest-message-id'
Yammer = new require('yammer').Yammer
CronJob = require('cron').CronJob
_ = require('underscore')
class Postman
constructor: (@message, @references) ->
id: ->
@message.id
sender_id: ->
@message.sender_id
sender_name: ->
users = @references.filter (row) =>
if row.type == "user" && row.id == @sender_id()
true
else
false
users[0].full_name
body: ->
@message.body.plain
url: ->
@message.web_url
created_at: ->
date = new Date(@message.created_at)
date.toLocaleString()
sendable: ->
@sender_id() != Number(YAMMER_USER_ID)
message: ->
"""
*#{@sender_name()}* (#{@created_at()})
```
#{@body()}
```
#{@url()}
"""
module.exports = (robot) ->
new CronJob('* */1 * * * *', () ->
message_id = robot.brain.get(KEY) || 609385388
yammer = new Yammer access_token: YAMMER_API_TOKEN
yammer.messagesReceived {qs: {newer_than: message_id, limit: 10}}, (res, json) ->
_.each json.messages, (message) ->
postman = new Postman(message, json.references)
if postman.sendable()
robot.send {room: ROOM_NAME}, postman.message()
robot.brain.set(KEY, postman.id())
console.log postman.id()
).start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment