@layerhq/idk
v1.0.1
Published
Layer Integration Development Kit common library
Downloads
19
Readme
Layer IDK
This is a Node.js library that is designed to be used with Layer Integration Development Kit (IDK).
It provides common functionality for validating & processing Layer Webhooks and access to common Layer Server API operations.
Initialization
To use this library you need to pass configuration object into the constructor. Configuration object should be a layer_config.json
file which is a part of Layer Integration Development Kit.
const LayerIDK = require('@layerhq/idk')
const config = require('./layer_config.json')
const layerIDK = new LayerIDK(config)
Configuration file is generated buy a Layer Integrations command line tool. At a minimum config JSON has the following format:
{
"app_id": "layer:///apps/staging/ffffffff-ffff-ffff-ffff-ffffffffffff",
"webhook": {
"secret": "supersecret",
"events": ["Message.created"]
},
"api": {
"token": "abcdefg"
}
}
Webhook
Every integration is powered by a Layer Webhook which is registered to listen for a set of events in an application.
.webhook(headers, body)
Validate and process a webhook by passing in HTTP headers
object and POST request body
. This is a synchronous function which will return webhook payload or throw an error that needs to be captured and handled.
Arguments
headers
- Webhook HTTP headersbody
- Webhook HTTP request body as a JSON string
Example
try {
const webhook = layerIDK.webhook(headers, body)
// webhook payload
} catch (err) {
console.error(err)
}
Logger
We provide a logger interface to unify log severity levels, abstract some of the Cloud Provider specific functionality and enable optional monitoring capabilities.
.logger(context)
Get logger interface by passing in the cloud function context
object.
Arguments
context
- Cloud function context object (AWS or Azure)
Example
const log = layerIDK.logger(context)
log.info('Hello world', { foo: 'bar' })
log.error('Error', new Error('Oops'))
Available levels: debug
, info
, warn
, error
, none
. Every level accepts the following function parameters: (message, object)
You can set log level by setting
LOG_LEVEL=error
env variable.
Monitoring
Logger has a built in monitoring capabilities. Read about monitoring here.
API
Access common Layer Server API operations via .api
namespace. Read API documentation here.
Utils
These are the utility functions exposed statically via LayerIDK
class. Read documentation here.
AWS Example
The following example shows how to use Amazon AWS API Gateway inside your Serverless handler.
const LayerIDK = require('@layerhq/idk')
const config = require('./layer_config.json')
const layerIDK = new LayerIDK(config)
exports.webhook = (event, context, callback) => {
const log = layerIDK.logger(contex)
try {
const webhook = layerIDK.webhook(event.headers, event.body)
// webhook payload
log.info('Webhook:', webhook)
callback(null, { statusCode: 200 })
} catch (err) {
log.error('Webhook:', err)
callback(err)
}
}