register-server-cloudevent-handlers

Registers a folder of handlers as HTTP POST routes on a server (fastify, express) that parses cloudevents from payload before sending to handler

Usage no npm install needed!

<script type="module">
  import registerServerCloudeventHandlers from 'https://cdn.skypack.dev/register-server-cloudevent-handlers';
</script>

README

register-server-cloudevent-handlers

Registers a folder of handlers as HTTP POST routes on a server that parses cloudevents from payload before sending to handler

Usage

Startup

On startup, call registerHandlers

import path from 'path'
import fastify from 'fastify'
import { registerHandlers } from 'register-server-cloudevent-handlers'

const server = fastify({
  ignoreTrailingSlash: true,
  logger: true
})

export const start = async (server) => {

  await registerHandlers({
    server,
    path: path.resolve(process.cwd(), 'src', 'handlers')
  })

  try {
    await server.listen(port)
  } catch (err) {
    server.log.error(err)
    process.exit(1)
  }
}

start(server)

Handlers

Each handler in the given directory must export a named function handle

For example, src/handlers/example.handle.js:

export const handle = async (event, reply) => {
  // get data, type, and source from cloud event
  const { data, type, source } = event
  // do stuff
  // then reply
  return reply.code(202).send({ status: 'complete' })
}

This will register /example.handle as an HTTP Post endpoint.