diff options
| author | Jules Laplace <jules@okfoc.us> | 2017-02-16 02:17:03 +0100 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2017-02-16 02:17:03 +0100 |
| commit | f40e2286faef696c25a81c04635aaf737606a39a (patch) | |
| tree | bedf10e8c731deae7d275e0e5d9d6ded604db154 /lib/okpush/apn.js | |
| parent | 71e277a76862a1787ab34194faf762b7623347fd (diff) | |
lib
Diffstat (limited to 'lib/okpush/apn.js')
| -rw-r--r-- | lib/okpush/apn.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/lib/okpush/apn.js b/lib/okpush/apn.js new file mode 100644 index 00000000..b6909f6f --- /dev/null +++ b/lib/okpush/apn.js @@ -0,0 +1,57 @@ + +var apn = require('apn') +var db = require('./db') +var apnProvider, apnFeedback + +function init (config) { + config.apn.connection.key = config.apn.key + config.apn.connection.cert = config.apn.cert + apnProvider = new apn.Provider(config.apn.connection) +} + +function push (note) { + db.getAllDevices(function(err, tokens){ + if (err) { + console.error("Error fetching devices:", err) + return + } + connection.send(note, tokens).then( function (response) { + // response.sent.forEach( function (token) { + // notificationSent(user, token) + // }) + response.failed.forEach( function (failure) { + if (failure.error) { + // A transport-level error occurred (e.g. network problem) + // notificationError(user, token, failure.error); + } else if (failure.status == 410) { + // `failure.status` is the HTTP status code + // `failure.response` is the JSON payload + // notificationFailed(token, failure.status, failure.response); + db.removeDevice(token) + } + }) + }) + }) +} + +function buildPayload (options, bundleId) { + var note = new apn.Notification() + note.topic = bundleId + if (options.expiry) + note.expiry = Math.floor(Date.now() / 1000) + options.expiry + if (options.alert) + note.alert = options.alert + if (options.badge) + note.badge = options.badge + if (options.payload) + note.payload = options.payload + if (options.sound) + note.sound = options.sound + return note +} + +module.exports = { + init: init, + push: push, + buildPayload: buildPayload +} |
