Skip to content

Commit

Permalink
All actions
Browse files Browse the repository at this point in the history
  • Loading branch information
thegoliathgeek committed Sep 28, 2019
1 parent 57fdb5a commit 64cd09d
Show file tree
Hide file tree
Showing 10 changed files with 158 additions and 24 deletions.
31 changes: 16 additions & 15 deletions credentials.js
@@ -1,19 +1,20 @@
const credential={
appkey: "",
secretKey: ""
}
const credential = {
appkey: '',
secretKey: '',
};

const deviceIds={
deviceId1: "",
deviceId2: "",
deviceId3: ""
}
let deviceIdT=[];
const deviceIds = {
deviceId1: '',
deviceId2: '',
deviceId3: '',
};
let deviceIdT = [];

for (var key in deviceIds){
if(deviceIds.hasOwnProperty(key)){
deviceIdT.push(deviceIds[key]);
}
for (let key in deviceIds) {
if (deviceIds.hasOwnProperty(key)) {
deviceIdT.push(deviceIds[key]);
}
}

const deviceIdArr = deviceIdT.join(';');
module.exports= {appKey: credential.appkey,secretKey: credential.secretKey,deviceId: deviceIdArr}
module.exports = { appKey: credential.appkey, secretKey: credential.secretKey, deviceId: deviceIdArr };
9 changes: 9 additions & 0 deletions examples/app.js
Expand Up @@ -15,11 +15,20 @@ function setColor(deviceId, data) {
console.log(deviceId, data);
}

function setRangeValue(deviceId, data) {
console.log(deviceId, data);
}
function setLockState(deviceId, data) {
console.log(deviceId, data);
}

const callbacks = {
setPowerState,
setPowerLevel,
adjustPowerLevel,
setColor,
setRangeValue,
setLockState,
};

app(callbacks);
2 changes: 1 addition & 1 deletion index.js
@@ -1 +1 @@
module.exports = require('./lib/sinrcpro');
module.exports = require('./lib/sinrcpro');
60 changes: 59 additions & 1 deletion lib/cbhandler.js
@@ -1,5 +1,4 @@
const { getSignature, verifySignature } = require('./signature');

const sinricData = require('./storage');

const jsonResponse = (defaultPayload, dValue) => {
Expand Down Expand Up @@ -66,6 +65,65 @@ const handlePayload = (payload, signature, callbacks) => verifySignature(payload
sinricData.color = payload.value.color;
callbacks.setColor(payload.deviceId, sinricData.color);
return jsonResponse(payload, payload.value);
} else if (action === 'setThermostatMode') {
sinricData.color = payload.value.color;
callbacks.setThermostatMode(payload.deviceId, payload.value.thermostatMode);
return jsonResponse(payload, payload.value);
} else if (action === 'setRangeValue') {
sinricData.rangeValue = payload.value.rangeValue;
callbacks.setRangeValue(payload.deviceId, sinricData.rangeValue);
return jsonResponse(payload, payload.value);
} else if (action === 'adjustRangeValue') {
sinricData.rangeValue += payload.value.rangeValueDelta;
if (sinricData.rangeValue > 100) sinricData.rangeValue = 100;
else if (sinricData.rangeValue < 0) sinricData.rangeValue = 0;
callbacks.adjustRangeValue(payload.deviceId, payload.value);
return jsonResponse(payload, { rangeValue: sinricData.rangeValue });
} else if (action === 'setVolume') {
sinricData.volume = payload.value.volume;
callbacks.setVolume(payload.deviceId, payload.value);
return jsonResponse(payload, payload.value);
} else if (action === 'adjustVolume') {
sinricData.volume += payload.value.volume;
if (sinricData.volume > 100) sinricData.volume = 100;
else if (sinricData.volume < 0) sinricData.volume = 0;
callbacks.adjustVolume(payload.deviceId, payload.value.volume);
return jsonResponse(payload, { volume: sinricData.volume });
} else if (action === 'selectInput') {
callbacks.selectInput(payload.deviceId, payload.value.input);
return jsonResponse(payload, payload.value);
} else if (action === 'mediaControl') {
callbacks.mediaControl(payload.deviceId, payload.value);
return jsonResponse(payload, payload.value);
} else if (action === 'changeChannel') {
callbacks.changeChannel(payload.deviceId, payload.value.channel.name);
return jsonResponse(payload, payload.value);
} else if (action === 'skipChannels') {
callbacks.skipChannels(payload.deviceId, payload.value.channelCount);
return jsonResponse(payload, payload.value);
} else if (action === 'setBands') {
sinricData.bands[0].level = payload.value.bands[0].level;
sinricData.bands[0].name = payload.value.bands[0].name;
callbacks.setBands(payload.deviceId, payload.value);
return jsonResponse(payload, payload.value);
} else if (action === 'adjustBands') {
if (sinricData.bands[0].levelDirection === 'UP') sinricData.bands[0].level += payload.value.bands[0].levelDelta;
else if (sinricData.bands[0].levelDirection === 'DOWN') sinricData.bands[0].level -= payload.value.bands[0].levelDelta;
sinricData.bands[0].name = payload.value.bands[0].name;
callbacks.adjustBands(payload.deviceId, payload.value);
return jsonResponse(payload, { bands: [{ level: sinricData.bands[0].level, name: sinricData.bands[0].name }] });
} else if (action === 'resetBands') {
callbacks.resetBands(payload.deviceId, payload.value);
return jsonResponse(payload, payload.value);
} else if (action === 'setMode') {
callbacks.setMode(payload.deviceId, payload.value.mode);
return jsonResponse(payload, payload.value);
} else if (action === 'setLockState') {
callbacks.setLockState(payload.deviceId, payload.value.state);
return jsonResponse(payload, { state: `${payload.value.state.toUpperCase()}ED` });
} else if (action === 'setMute') {
callbacks.setMute(payload.deviceId, payload.value.mute);
return jsonResponse(payload, payload.value);
}
return {};
}).catch((err) => {
Expand Down
2 changes: 1 addition & 1 deletion lib/prosocket.js
@@ -1,6 +1,6 @@
const Websocket = require('ws');

const { appKey, deviceId } = require('../credentials');
const { appKey, deviceId } = require('../credential');

const client = new Websocket('ws://ws.sinric.pro', {
headers: {
Expand Down
2 changes: 1 addition & 1 deletion lib/signature.js
@@ -1,6 +1,6 @@
const crypto = require('crypto');

const { secretKey } = require('../credentials');
const { secretKey } = require('../credential');

const getSignature = (message) => crypto.createHmac('sha256', secretKey).update(message).digest('base64');

Expand Down
8 changes: 8 additions & 0 deletions lib/storage.js
Expand Up @@ -6,6 +6,14 @@ let data = {
g: 0,
b: 0,
},
rangeValue: 0,
volume: 0,
bands: [
{
level: 0,
name: '',
},
],
};

module.exports = data;
58 changes: 58 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion package.json
Expand Up @@ -23,6 +23,10 @@
"devDependencies": {
"eslint": "^6.4.0",
"eslint-config-airbnb-base": "^14.0.0",
"eslint-plugin-import": "^2.18.2"
"eslint-config-standard": "^14.1.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-node": "^10.0.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1"
}
}
4 changes: 0 additions & 4 deletions some.json

This file was deleted.

2 comments on commit 64cd09d

@kakopappa
Copy link
Collaborator

Choose a reason for hiding this comment

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

hi,

can you make handlePayload more reliable, please? it looks compact and hard to read.

@thegoliathgeek
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Okay sure. I'll spilt actions into different components.

Please sign in to comment.