UNPKG

hnb_script

Version:

Fetches currency data fron HNB and makes it available over API

59 lines (57 loc) 2.06 kB
var winston = require('winston'), logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({ level: 'error' }) ] }), request = require("request"), usedDate = '', d = new Date(), helpers = require('./helpers'), /* Variable that, when set, represent a function that will be called when tecaj.js successfully receives JSON */ resultCallback, /* Returns a string representing a date in 'ddMMyy' string format. */ dateString = helpers.dateString, parseBody = helpers.parseBody, /* Callback function called on request. Checks if any 'checked' error has occured, and if so, displays proper message. If request was successful, parse method is called. Ambiguous error message is displayed when something wrong happened. */ callback = function (error, response, body) { if (error) { logger.log(error); } else if (response.statusCode == 404) { logger.log('error','No document found under provided date [' + usedDate + ']. Trying day before'); d.setDate(d.getDate() - 1); usedDate = dateString(d); var link = "http://www.hnb.hr/tecajn/f" + usedDate + ".dat"; request(link, callback); } else if (!error && response.statusCode == 200) { var a = parseBody(body); logger.log('info',JSON.stringify(a)); if (resultCallback !== null) { resultCallback(a); } } else { logger.log('error',"Error has occured"); } } module.exports = { getTecaj : function(date, results) { if(typeof date === 'function'){ resultCallback = date; usedDate = dateString(d); } else{ resultCallback = results; usedDate = date || dateString(d); } var link = "http://www.hnb.hr/tecajn/f" + usedDate + ".dat"; request(link, callback); } }