@xrps/fcm-token-registry
v1.0.0
Published
An HTTP web server for managing Firebase Cloud Messaging device tokens.
Downloads
19
Maintainers
Readme
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
expressmiddleware. - 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-registryUsage
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 [email protected]
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 [email protected]
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.
