FCM Token Registry
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.