timpani

module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2025 License: Apache-2.0

README

Timpani

Go Reference Go Report Card

Timpani is a Temporal worker that sends API calls and receives asynchronous event notifications to/from various well-known third-party services.

API calls are wrapped and exposed as Temporal activities for robustness and durable execution in larger workflows.

Event listeners are similarly reliable and scalable, and support multiple technologies: HTTP webhooks, WebSocket connections, and Pub/Sub subscriptions. They may be passive and stateless receivers with a static configuration on the remote service's side, or semi-active subscribers that renew their subscription from time to time, or stateful clients maintaining a 2-way streaming connection with the remote service.

For example:

  • Discord: WebSocket client
  • Gmail: Google Cloud Pub/Sub subscriber
  • Jira: stateful HTTP webhook (with periodic subscription renewals)
  • Slack: stateless HTTP webhook / WebSocket client

Dependencies

Directories

Path Synopsis
autobahn
wstest command
wstest tests Timpani's [WebSocket client] against the fuzzing server of the [Autobahn Testsuite].
wstest tests Timpani's [WebSocket client] against the fuzzing server of the [Autobahn Testsuite].
cmd
timpani command
internal
listeners
Package listeners defines standard types for input parameters and function signatures which are used by all the handler functions in pkg/listeners.
Package listeners defines standard types for input parameters and function signatures which are used by all the handler functions in pkg/listeners.
thrippy
Package thrippy provides common helper functions for the [Thrippy gRPC service].
Package thrippy provides common helper functions for the [Thrippy gRPC service].
pkg
http/client
Package client provides a simple, generic HTTP client for sending GET and POST requests to external APIs, which is used by other packages under pkg/api.
Package client provides a simple, generic HTTP client for sending GET and POST requests to external APIs, which is used by other packages under pkg/api.
listeners/github
Package github implements an HTTP webhook to handle GitHub events (https://docs.github.com/en/webhooks).
Package github implements an HTTP webhook to handle GitHub events (https://docs.github.com/en/webhooks).
listeners/slack
Package slack handles Slack's [Events API] and [interaction payloads], over [HTTP webhooks and Socket Mode].
Package slack handles Slack's [Events API] and [interaction payloads], over [HTTP webhooks and Socket Mode].
temporal
Package temporal initializes a Temporal worker that provides activities and workflows wrapping the APIs of various third-party services which are defined and implemented under the pkg/api and pkg/listeners packages.
Package temporal initializes a Temporal worker that provides activities and workflows wrapping the APIs of various third-party services which are defined and implemented under the pkg/api and pkg/listeners packages.
websocket
Package websocket is a lightweight yet robust client-only implementation of the WebSocket protocol (RFC 6455).
Package websocket is a lightweight yet robust client-only implementation of the WebSocket protocol (RFC 6455).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL