From 3c097b3450a5292f26faf355ae7990a13313074f Mon Sep 17 00:00:00 2001 From: Jon Maddox Date: Thu, 3 Sep 2015 01:25:30 -0400 Subject: [PATCH 1/3] add a home page --- public/harmony-icon.png | Bin 0 -> 22972 bytes public/index.html | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 public/harmony-icon.png create mode 100644 public/index.html diff --git a/public/harmony-icon.png b/public/harmony-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7e96059e0948ef6f6420929800dda077d3ce2e GIT binary patch literal 22972 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 + + + + Harmony API + + + + +
+

Harmony API

+ +
+

Info

+

GET /status

+

GET /activities

+ +

Control

+

PUT /off

+

POST /start_activity?activity_name=Watch%20TV

+
+ + +
+ + + From 718005602a7a0d7ee080ee31a4e0152ef9b92ac5 Mon Sep 17 00:00:00 2001 From: Jon Maddox Date: Thu, 3 Sep 2015 01:25:40 -0400 Subject: [PATCH 2/3] serve home page --- app.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app.js b/app.js index 8be120b..dd0dc8e 100755 --- a/app.js +++ b/app.js @@ -1,4 +1,5 @@ var fs = require('fs') +var path = require('path') var util = require('util') var express = require('express') var morgan = require('morgan') @@ -14,6 +15,7 @@ var harmonyActivityUpdateTimer var app = express() app.use(bodyParser.urlencoded({ extended: false })) +app.use(express.static(path.join(__dirname, 'public'))); var logFormat = "'[:date[iso]] - :remote-addr - :method :url :status :response-time ms - :res[content-length]b'" app.use(morgan(logFormat)) @@ -92,6 +94,10 @@ function activityByName(activityName){ return activity } +app.get('/', function(req, res){ + res.sendfile('index.html'); +}) + app.get('/activities', function(req, res){ res.json({activities: cachedHarmonyActivities()}) }) From 3ab42540766a8b0d38fb22b710e2eca8f0853731 Mon Sep 17 00:00:00 2001 From: Jon Maddox Date: Thu, 3 Sep 2015 01:25:50 -0400 Subject: [PATCH 3/3] add a _ping route for health checks --- app.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app.js b/app.js index dd0dc8e..b86c6c2 100755 --- a/app.js +++ b/app.js @@ -94,6 +94,10 @@ function activityByName(activityName){ return activity } +app.get('/_ping', function(req, res){ + res.send('OK'); +}) + app.get('/', function(req, res){ res.sendfile('index.html'); })