summaryrefslogtreecommitdiff
path: root/lib/okpush/apn.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2017-02-16 02:17:03 +0100
committerJules Laplace <jules@okfoc.us>2017-02-16 02:17:03 +0100
commitf40e2286faef696c25a81c04635aaf737606a39a (patch)
treebedf10e8c731deae7d275e0e5d9d6ded604db154 /lib/okpush/apn.js
parent71e277a76862a1787ab34194faf762b7623347fd (diff)
lib
Diffstat (limited to 'lib/okpush/apn.js')
-rw-r--r--lib/okpush/apn.js57
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
+}