0.0.2 • Published 6 years ago
@sagi.io/cfw-pubsub v0.0.2
cfw-pubsub
@sagi.io/cfw-pubsub is a Google Pub/Sub REST API for Cloudflare Workers (can also be used with Node).
Installation
$ npm i @sagi.io/cfw-pubsubAPI
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:
- serviceAccountJSONrequired Is a Google Cloud service account with a Pub/Sub Admin role. An object.
- cryptoImploptional Not needed when running on Cloudflare Workers. See concrete example below for how to use it with Node.js.
- fetchImploptional 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:
- topicrequired The topic to send messages to.
- messagesrequired an array of Pub/Sub messages. You can use the- PubSub.helpers.createPubSubMessagemethod 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:
- messageoptional A message string. e.g.- Hello World.
- attributesoptional 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 })