1.0.0 • Published 6 years ago

@xrps/fcm-token-registry v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 years ago

FCM Token Registry

Build statusCode coverage status

An HTTP web server for managing Firebase Cloud Messaging device tokens.

const createInMemoryStorage = require('@xrps/fcm-token-registry/lib/adapters/in-memory-entry-storage');
const createRegistry = require('@xrps/fcm-token-registry/lib/registry');
const { factory: createApi } = require('@xrps/fcm-token-registry');

const storage = createInMemoryStorage({ entries: [] });
const registry = createRegistry({ storage });
const api = createApi({ registry });

api.listen(3000);

Features

  • Minimalist. Exposes a small set of endpoints.
  • Extensible. New functionally can be added by injecting express middleware.
  • Convenient. Can be ran as an HTTP server or use-d as an express middleware.
  • Flexible. Can be used as a whole or in parts.

Installation

$ npm install @xrps/fcm-token-registry

Usage

As a standalone server:

const mongodb = require('mongodb');

const { factory: createMongoDbStorage } = require('@xrps/fcm-token-registry/lib/adapters/mongodb-entry-storage');
const createRegistry = require('@xrps/fcm-token-registry/lib/registry');
const { factory: createApi } = require('@xrps/fcm-token-registry');

const dbUri = 'mongodb://localhost:27017';
const dbName = 'fcm-registry';

function start() {
  // assumes mongodb@3.x
  return mongodb.MongoClient
    .connect(dbUri)
    .then((dbClient) => {
      const db = dbClient.db(dbName);
      const entryStorage = createMongoDbStorage({ db });
      const registry = createRegistry({ entryStorage });
      const api = createApi({ registry });

      const server = api.listen(3000);

      server.on('listening', () => {
        console.log('listening for incoming connections at port 3000');
      });
    });
}

start();
  .catch(e => console.error(e));

As an middleware for express:

const express = require('express')

const createInMemoryFcmTokenStorage = require('@xrps/fcm-token-registry/lib/adapters/in-memory-entry-storage');
const createFcmTokenRegistry = require('@xrps/fcm-token-registry/lib/registry');
const { factory: createFcmTokenRegistryApi } = require('@xprs/fcm-token-registry');

const app = express();
const fcmTokenRegistryApi = createFcmTokenRegistryApi({ entryStorage: createInMemoryFcmTokenStorage() });

// ... do usual, express-related stuff, then

app.use('/device-tokens', fcmTokenRegistryApi);

// ... more express stuff

app.listen(3000);

Only certain parts:

/**
 * Suppose you'd like to be able to print all tokens assigned to a given user email (group ID) in the command-line.
 */
const userEmail = process.argv[1];

function start() {
  // assumes mongodb@3.x
  return mongodb.MongoClient
    .connect(dbUri)
    .then((dbClient) => {
      const db = dbClient.db(dbName);
      const entryStorage = createMongoDbStorage({ db });
      const registry = createRegistry({ entryStorage });

      return registry
        .getEntriesByGroupId(userEmail)
        .then((entries) => entries.forEach(({ token }) => console.log(token)));
    });
}

start()
  .catch(e => console.error(e));

API

Coming soon.

Examples

Coming soon.

Road-map

Coming soon.