node-red-contrib-twc-covid19-tracker
Version:
Node-RED nodes for The Weather Company COVID-19 Disease Tracker Data API
68 lines (58 loc) • 2.03 kB
JavaScript
module.exports = function(RED) {
function covid19apikeyNode(n) {
RED.nodes.createNode(this,n);
var node = this;
//node.apikey = n.apikey;
}
RED.nodes.registerType("covapikey", covid19apikeyNode, {
credentials: {
apikey: {type: "password"}
}
});
function twcCovid19TrackerNode( n ) {
RED.nodes.createNode(this,n );
var node = this;
var name = n.name;
var locationtype = n.locationtype;
var location= n.location;
var territory=n.territory;
var covConfigNode;
var apiKey;
const axios = require('axios');
// Retrieve the config node
covConfigNode = RED.nodes.getNode(n.apikey);
apiKey = covConfigNode.credentials.apikey;
if (!territory) {
territory = 'country';
}
node.on('input', function (msg) {
msg.twcparams = msg.twcparams || {};
if( typeof msg.twcparams.territory == 'undefined' ) {
msg.twcparams.territory = territory; // take the default or the node setting
} else {
// passed in param, override default or node setting
msg.twcparams.territory = msg.twcparams.territory.toLowerCase();
}
if( typeof msg.twcparams.location == 'undefined' ) {
msg.twcparams.location = location;
}
if( typeof msg.twcparams.locationtype == 'undefined' ) {
msg.twcparams.locationtype = locationtype;
}
(async () => {
try {
const response = await axios.get('https://api.weather.com/v3/wx/disease/tracker/'+msg.twcparams.territory+'/60day?'+ msg.twcparams.locationtype + '='+ msg.twcparams.location +'&format=json&apiKey='+apiKey);
//console.log(response.data)
msg.payload = response.data;
node.send(msg);
} catch (error) {
console.log(error.response.data);
//console.log(error.response.status);
node.warn(error.response.data);
node.send(msg);
}
})();
});
}
RED.nodes.registerType("twc-covid19-tracker",twcCovid19TrackerNode);
}