This package has been deprecated

Author message:

Moved to @sagi.io/workers-pubsub

@sagi.io/cfw-pubsub

0.0.2 • Public • Published

cfw-pubsub

@sagi.io/cfw-pubsub is a Google Pub/Sub REST API for Cloudflare Workers (can also be used with Node).

CircleCI Coverage Status MIT License version

Installation

$ npm i @sagi.io/cfw-pubsub

API

We follow Google's Pub/Sub REST API specification. We'll add more methods if there's demand.

See below for concrete examples for Cloudflare Workers and Node.js.

PubSubREST({ ... })

Instantiates PubSub instance.

Function definition:

 const PubSubREST = async ({
  serviceAccountJSON,
  cryptoImpl = null,
  fetchImpl = null,
}) => { ... }

Where:

  • serviceAccountJSON required Is a Google Cloud service account with a Pub/Sub Admin role. An object.
  • cryptoImpl optional Not needed when running on Cloudflare Workers. See concrete example below for how to use it with Node.js.
  • fetchImpl optional Not needed when running on Cloudflare Workers. See concrete example below for how to use it with Node.js.

PubSub.topics.publish({ ... })

Publishes a message to a topic.

Function definition:

const publish = ({ topic, messages } = {}) => { ... }

Where:

  • topic required The topic to send messages to.
  • messages required an array of Pub/Sub messages. You can use the PubSub.helpers.createPubSubMessage method to easily create a Pub/Sub message.

PubSub.topics.list({ ... })

Lists all topics.

PubSub.helpers.createPubSubMessage({ ... })

Helps create a PubSub message easily.

Function definition:

const createPubSubMessage = ({ message = '', attributes = undefined } = {}) => { ... }

Where:

  • message optional A message string. e.g. Hello World.
  • attributes optional An object with string values. e.g. { type: 'slack-poll' }.

Returns a Pub/Sub message.

Cloudflare Workers Example

import base64url from 'base64url'
import PubSubREST from '@sagi.io/cfw-pubsub'

const serviceAccountJSON = ...

const PubSub = await PubSubREST({ serviceAccountJSON })

const topic = 'gcf-task'
const psMessage = PubSub.createPubSubMessage({ message: 'Hello World!' })
const messages = [ psMessage ]

await PubSub.topics.publish({ topic, messages })

Node.js Example

import fetchImpl from 'cross-fetch'
import WebCrytpo from 'node-webcrypto-ossl'
import PubSubREST from '@sagi.io/cfw-pubsub'

const cryptoImpl = new WebCrypto()

const serviceAccountJSON = ...

const PubSub = await PubSubREST({ serviceAccountJSON, cryptoImpl. fetchImpl })

const topic = 'gcf-task'
const psMessage = PubSub.helpers.createPubSubMessage({ message: 'Hello World!' })
const messages = [ psMessage ]

await PubSub.topics.publish({ topic, messages })

Package Sidebar

Install

npm i @sagi.io/cfw-pubsub

Homepage

sagi.io

Weekly Downloads

0

Version

0.0.2

License

MIT

Unpacked Size

12.8 kB

Total Files

4

Last publish

Collaborators

  • kedmi