elevenetc/device-manager-back-end

View on GitHub
src/cloud/gcm-sender.js

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * Created by eleven on 29/08/2016.
 */

const GCM = require('node-gcm');

class GcmSender {

    constructor(config) {
        this.sender = new GCM.Sender(config.keys.googleCloud);
    }

    ping(pushTokens, okHandler, failHandler) {
        this.internalPing(pushTokens, okHandler, failHandler);
    }

    internalPing(tokens, okHandler, failHandler) {

        const message = new GCM.Message({
            timeToLive: 10,
            data: {command: 'ping'}
        });

        this.sender.send(message, {registrationTokens: tokens}, function (err, response) {
            if (err) {
                failHandler({err: err, resp: response});
            } else {
                if (response.failure === 0) okHandler();
                else failHandler();
            }
        });
    }
}

module.exports = GcmSender;