Skip to content
This repository was archived by the owner on Jun 8, 2023. It is now read-only.

Airtime API Hubot script support #1200

Closed
wants to merge 2 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions src/scripts/airtime.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Description:
# Airtime API Interaction for Hubot
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd include a link if possible.

#
# Dependencies:
# None
#
# Configuration:
# HUBOT_AIRTIME_URL - URL to Airtime installation, like http://airtime.myhost.com
#
# Commands:
# hubot airtime now - Display what's currently broadcasted on Airtime
# hubot airtime next track - Displays what will be the next track to be broadcasted on Airtime
# hubot airtime next show - Displays what will be the next show broadcasted on Airtime
# hubot airtime previous track - Displays what has just been broadcasted on Airtime
#
# Author:
# sjourdan

module.exports = (robot) ->

robot.respond /airtime now/i, (msg) ->
unless process.env.HUBOT_AIRTIME_URL
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This check & msg.send are duplicated in each of the commands. I'd suggest moving it to a helper like validEnvironment like:

validEnvironment = (msg) ->

   if process.env.HUBOT_AIRTIME_URL
     true
   else
      msg.send "Please set the HUBOT_AIRTIME_URL environment variable."
      false

That would simplify the other commands to like: return unless validEnvironment(msg).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would also include more details about how you figure out what value to put into this variable. Do you sign up for something? Have to setup software somewhere?

msg.send "Please set the HUBOT_AIRTIME_URL environment variable."
return

msg.http("#{process.env.HUBOT_AIRTIME_URL}/api/live-info")
.get() (err, res, body) ->
try
json= JSON.parse(body)
track = json.current.name
show = json.currentShow[0].name
msg.send "Now playing: #{track} on #{show}"
catch error
msg.send "Error: couldn't parse Airtime API on #{process.env.HUBOT_AIRTIME_URL}: #{error}"

robot.respond /airtime next track/i, (msg) ->
unless process.env.HUBOT_AIRTIME_URL
msg.send "Please set the HUBOT_AIRTIME_URL environment variable."
return

msg.http("#{process.env.HUBOT_AIRTIME_URL}/api/live-info")
.get() (err, res, body) ->
try
json= JSON.parse(body)
track = json.next.name
starts = json.next.starts.split " "
time = starts[1]
tz = json.timezone
msg.send "Coming next: #{track} at #{time} #{tz}"
catch error
msg.send "Error: couldn't parse Airtime API on #{process.env.HUBOT_AIRTIME_URL}: #{error}"

robot.respond /airtime next show/i, (msg) ->
unless process.env.HUBOT_AIRTIME_URL
msg.send "Please set the HUBOT_AIRTIME_URL environment variable."
return

msg.http("#{process.env.HUBOT_AIRTIME_URL}/api/live-info")
.get() (err, res, body) ->
try
json= JSON.parse(body)
show = json.nextShow[0].name
starts = json.nextShow[0].starts.split " "
time = starts[1]
tz = json.timezone
msg.send "Next show is: #{show} at #{time} #{tz}"
catch error
msg.send "Error: couldn't parse Airtime API on #{process.env.HUBOT_AIRTIME_URL}: #{error}"

robot.respond /airtime previous track/i, (msg) ->
unless process.env.HUBOT_AIRTIME_URL
msg.send "Please set the HUBOT_AIRTIME_URL environment variable."
return

msg.http("#{process.env.HUBOT_AIRTIME_URL}/api/live-info")
.get() (err, res, body) ->
try
json= JSON.parse(body)
track = json.previous.name
starts = json.previous.starts.split " "
time = starts[1]
tz = json.timezone
msg.send "Just played: #{track} at #{time} #{tz}"
catch error
msg.send "Error: couldn't parse Airtime API on #{process.env.HUBOT_AIRTIME_URL}: #{error}"