'use strict'; var util = require('util'), https = require('https'), winston = require('winston'), querystring = require('querystring'); var PushoverLogger = winston.transports.PushoverLogger = function (options) { this.token = options.token; this.user = options.user; this.name = 'Pushover.net Logger'; this.level = options.level || 'error'; }; util.inherits(PushoverLogger, winston.Transport); PushoverLogger.prototype.log = function (level, msg, meta, callback) { if (!callback) { callback = function () {}; } var parameters = querystring.stringify({ priority: 1, token: this.token, user: this.user, message: 'An error has occurred: ' + msg }), req = https.request({ method: 'POST', hostname: 'api.pushover.net', path: '/1/messages.json', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': parameters.length } }, function (res) { var output = ""; res.setEncoding('utf8'); res.on('data', function (chunk) { output += chunk; }); res.on('end', function () { try { var jsonOutput = JSON.parse(output); callback(null, jsonOutput); } catch (err) { callback(err); } }); }).on('error', function (err) { callback(err); }); req.write(parameters); req.end(); };