blob: 40cb8b01393d396aac0148f503203ecd920e31df [file] [log] [blame]
var request = require('request'),
uuid = require('uuid');
module.exports = function exports(api) {
var module = {};
module.makeEchoChamber = function makeEchoChamber(key, namespace, next, nextOnErr) {
var names = {
rule: 'rule_' + uuid.v4(),
trigger: 'trigger_' + uuid.v4(),
action: 'action_' + uuid.v4()
}
makeTrigger(key, namespace, names.trigger,
makeAction.bind(undefined, key, namespace, names.action,
makeRule.bind(undefined,
{ trigger: names.trigger, action: names.action },
key, namespace, names.rule, function allDone() {
next(names);
}, nextOnErr),
nextOnErr),
nextOnErr);
return names;
}
function makeEntity(type, body, key, namespace, name, next, nextOnErr) {
var opts = {
url: api.host + api.path + '/namespaces/' + encodeURIComponent(namespace) + '/' + type + 's/' + encodeURIComponent(name),
method: 'PUT',
json: true,
body: body || {},
headers: {
'Content-Type': 'application/json',
'Authorization': 'basic ' + new Buffer(key).toString('base64')
},
};
request(opts, function(err, response, body) {
if (err || response.statusCode != 200) {
console.log('makeEchoChamber:Error ' + JSON.stringify(err, undefined, 4) + ' ' + (response && response.statusCode) + ' ' + JSON.stringify(body, undefined, 4));
nextOnErr();
} else {
next();
}
});
}
var echo = {
exec: {
kind: 'nodejs:default',
code: 'function main(params) { return params; }'
}
};
var makeTrigger = makeEntity.bind(undefined, 'trigger', undefined);
var makeAction = makeEntity.bind(undefined, 'action', echo);
var makeRule = makeEntity.bind(undefined, 'rule');
return module;
};