symphony-solutions-file-sender
Version:
Module for sending data to mapper
52 lines (43 loc) • 1.24 kB
JavaScript
;
var Logger = require('symphony-solutions-logger'),
request = require('request'),
log;
class FileSender {
/**
* @param {String} url - url for data to be sent
* @param {String} loggerPrefix - prefix for logging
* @throws {Error} if the url has not been given
*/
constructor (url, loggerPrefix) {
this.url = url;
this.loggerPrefix = loggerPrefix || 'FileSender';
log = new Logger(this.loggerPrefix);
if (!this.url) {
throw new Error('The url param is required');
}
}
/**
* Send file's data to given url. Preferably to give .json files
* @param {Object} data - data which will be sent to mapper.
* @return {Promise}
*/
send (data) {
return new Promise((resolve, reject) => {
var requestSettings = {
url : this.url,
method: 'PUT',
json : true,
body : data
};
log.warn(`Trying to post event to: ${log.emphasize(this.url)} ...`);
request(requestSettings, (error, data) => {
if (error) {
log.error(error);
return reject(error);
}
data && data.body ? resolve(data.body) : reject();
});
});
}
}
module.exports = FileSender;