Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

sagi/workers-pubsub

Open more actions menu

Repository files navigation

workers-pubsub

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

⭐ We use it at OpenSay to efficiently access Google's PubSub REST API with 1 round trip.

CircleCI Coverage Status MIT License version

Installation

$ npm i @sagi.io/workers-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' }.
  • ordering_key optional An ordering key to allow subscribers to receive messages in order in the same region. Read more here.

Returns a Pub/Sub message.

Cloudflare Workers Example

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

const serviceAccountJSON = ...

const PubSub = await PubSubREST({ serviceAccountJSON })

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

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

Node.js Example

import fetchImpl from 'cross-fetch'
import { Crypto }from 'node-webcrypto-ossl'
import PubSubREST from '@sagi.io/workers-pubsub'

const cryptoImpl = new Crypto()

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 })

About

Google Pub/Sub API for Cloudflare Workers (and Node.js)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.