convoy

package module
v0.8.1 Latest Latest
Warning

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

Go to latest
Published: Feb 8, 2023 License: MPL-2.0 Imports: 4 Imported by: 22

README

Convoy

golangci-lint Build and run all tests

convoy image

Convoy is a fast & secure webhooks proxy. It enables you to receive webhook events from providers and publish them to users.. To get started download the openapi spec into Postman or Insomnia.

Convoy includes the following features:

  • Security: Convoy signs the payload of events, so applications ensure the events have not been tampered with. You can configure your desired hash function to use as well as the name of the header E.g. X-Stripe-Signature to enable backward compatible migrations from custom-built systems to Convoy.

  • URL per Events: Convoy is able to receive one event and fan-out the event to multiple endpoints based on the configuration by the endpoint owner. On subscription, the endpoint owner configures what events should go to each endpoint. Overlaps are allowed.

  • Retries: Convoy currently supports two retry mechanisms: Constant time retries and exponential backoff. You can configure which retry mechanism works best for your application.

  • Management UI: Visibility and easy debugging are one of highly coveted features of a webhook delivery system. Convoy provides a UI to view your delivery attempt logs, filter by application, event status, date & time and perform flexible batch retries during downtimes.

  • Application Portal: Application Portal allows API providers embed Convoy dashboard directly into their API dashboard. With the API, users can build their own webhooks portal if you care so much about whitelisting. :)

Installation, Getting Started

There are several ways to get started using Convoy.

Option 1: Download our Binaries or Docker Image

Convoy binaries can be downloaded with your package manager of choice. You can head over to Downloads Page to proceed.

$ docker run \
	-p 5005:5005 \
	--name convoy-server \
    --network=host \
	-v `pwd`/convoy.json:/convoy.json \
	docker.cloudsmith.io/convoy/convoy/frain-dev/convoy:latest
Option 2: Spin up an instance with third-party dependencies on a Linux VM
 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/frain-dev/convoy/main/deploy/vm-deploy.sh)"
Option 3: If you don't wish to self-host

Sign up for a free Convoy Cloud account

Option 4: Building from source

To build Convoy from source code, you need:

$ git clone https://github.com/frain-dev/convoy.git && cd convoy
$ make build

Contributing

Thank you for your interest in contributing! Please refer to CONTRIBUTING.md for guidance. For contributions to the Convoy dashboard, please refer to the web/ui directory.

License

Mozilla Public License v2.0

Documentation

Index

Constants

View Source
const (
	RATE_LIMIT          = 5000
	RATE_LIMIT_DURATION = "1m"
	HTTP_TIMEOUT        = "30s"
)
View Source
const (
	EventProcessor         TaskName = "EventProcessor"
	DeadLetterProcessor    TaskName = "DeadLetterProcessor"
	CreateEventProcessor   TaskName = "CreateEventProcessor"
	NotificationProcessor  TaskName = "NotificationProcessor"
	IndexDocument          TaskName = "index document"
	DailyAnalytics         TaskName = "daily analytics"
	MonitorTwitterSources  TaskName = "monitor twitter sources"
	RetentionPolicies      TaskName = "retention_policies"
	EmailProcessor         TaskName = "EmailProcessor"
	ExpireSecretsProcessor TaskName = "ExpireSecretsProcessor"
	EndpointsCacheKey      CacheKey = "endpoints"
	ProjectsCacheKey       CacheKey = "projects"
	TokenCacheKey          CacheKey = "tokens"
	SourceCacheKey         CacheKey = "sources"
)
View Source
const (
	DefaultOnPremDir = "/var/convoy/export"
	TmpExportDir     = "/tmp/convoy/export"
)

Exports dir

View Source
const (
	Concurrency = 100
)
View Source
const (
	EventDeliveryIDLength = 12
)

Variables

View Source
var ErrUnsupportedDatebase = fmt.Errorf("unsupported database for search detected, remove search configuration or use a supported database (mongodb)")

Functions

func GetVersion added in v0.4.10

func GetVersion() string

func ReadVersion added in v0.4.10

func ReadVersion() ([]byte, error)

Types

type CacheKey added in v0.5.3

type CacheKey string

func (CacheKey) Get added in v0.5.3

func (c CacheKey) Get(suffix string) CacheKey

func (CacheKey) String added in v0.5.3

func (c CacheKey) String() string

type GenericMap added in v0.6.0

type GenericMap map[string]interface{}

type HttpMethod

type HttpMethod string
const (
	HttpPost HttpMethod = "POST"
	HttpGet  HttpMethod = "GET"
)

type Plugin

type Plugin interface {
	Apply(http.ResponseWriter, *http.Request) error
	Name() string
	IsEnabled() bool
}

type QueueName added in v0.6.0

type QueueName string
const (
	EventQueue       QueueName = "EventQueue"
	CreateEventQueue QueueName = "CreateEventQueue"
	PriorityQueue    QueueName = "PriorityQueue"
	ScheduleQueue    QueueName = "ScheduleQueue"
	DefaultQueue     QueueName = "DefaultQueue"
)

queues

type TaskName

type TaskName string

func (TaskName) SetPrefix

func (t TaskName) SetPrefix(prefix string) TaskName

Directories

Path Synopsis
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag at 2023-01-14 14:09:58.251878 +0000 GMT m=+1.07248366
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag at 2023-01-14 14:09:58.251878 +0000 GMT m=+1.07248366
internal
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
pkg
log

Jump to

Keyboard shortcuts

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