Common Node.js library for the Layer Integration Development Kit
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
src
tests
.gitignore
.npmignore
API.md
LICENSE
MONITORING.md
README.md
UTILS.md
index.js
package.json

README.md

Layer IDK

npm version Build Status

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 headers
  • body - 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)
  }
}