Compass Digital Data Provider
An easy way to get started building data providers for Compass Digital. Provides an easy interface for creating methods that will be called via JSON-RPC 2.0.
Includes a built-in HTTP server and AWS Lambda handler.
Requirements
Installation
npm install @compassdigital/provider --save
Usage
var Provider = require("@compassdigital/provider");
var provider = new Provider({type: "menu"});
provider.on("get_menu", function(req, callback)
{
your_function(req, function(err, res)
{
callback(err, res);
});
});
provider.on(["get_menu", "get_menu_today"], () => {...});
Logging
You can configure logging behaviour by providing logging options to the constructor.
const provider = new Provider({
type: "menu"
logging: {
local_only: false,
sentry: {
dsn: SENTRY_DSN,
environment: STAGE,
},
},
});
For full options, view documentation for the logging package.
Context
Sometimes your handler needs to know the context of the method call e.g. the user's id, location, etc. This is accessible via promises from this.context().
For example:
provider.on('get_menu', function (req, callback) {
this.context()
.user()
.then(function (user_data) {
var user_id = user_data.id;
callback(err, { message: 'Your user id was ' + user_id });
});
});
HTTP Server
provider.start(3000);
provider.stop();
AWS Lambda Handler
Create lambda.js ending with:
var provider = (module.exports = provider.lambda);
Configure a Lambda function with the setting Handler:
lambda.handler
Testing
KEY_ARN="SOME PRIVATE AWS KMS KEY ARN" node test