cloudevents

package module
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Sep 11, 2019 License: Apache-2.0 Imports: 6 Imported by: 466

README

Go SDK for CloudEvents

go-doc Go Report Card CircleCI Releases LICENSE

NOTE: This SDK is still considered work in progress, things might (and will) break with every update.

Working with CloudEvents

Package cloudevents provides primitives to work with CloudEvents specification: https://github.com/cloudevents/spec.

Import this repo to get the cloudevents package:

import "github.com/cloudevents/sdk-go"

Receiving a cloudevents.Event via the HTTP Transport:

func Receive(event cloudevents.Event) {
	// do something with event.Context and event.Data (via event.DataAs(foo)
}

func main() {
	c, err := cloudevents.NewDefaultClient()
	if err != nil {
		log.Fatalf("failed to create client, %v", err)
	}
	log.Fatal(c.StartReceiver(context.Background(), Receive));
}

Creating a minimal CloudEvent in version 0.2:

event := cloudevents.NewEvent()
event.SetID("ABC-123")
event.SetType("com.cloudevents.readme.sent")
event.SetSource("http://localhost:8080/")
event.SetData(data)

Sending a cloudevents.Event via the HTTP Transport with Binary v0.2 encoding:

t, err := cloudevents.NewHTTPTransport(
	cloudevents.WithTarget("http://localhost:8080/"),
	cloudevents.WithEncoding(cloudevents.HTTPBinaryV02),
)
if err != nil {
	panic("failed to create transport, " + err.Error())
}

c, err := cloudevents.NewClient(t)
if err != nil {
	panic("unable to create cloudevent client: " + err.Error())
}
if err := c.Send(ctx, event); err != nil {
	panic("failed to send cloudevent: " + err.Error())
}

Or, the transport can be set to produce CloudEvents using the selected encoding but not change the provided event version, here the client is set to output structured encoding:

t, err := cloudevents.NewHTTPTransport(
	cloudevents.WithTarget("http://localhost:8080/"),
	cloudevents.WithStructuredEncoding(),
)

If you are using advanced transport features or have implemented your own transport integration, provide it to a client so your integration does not change:

t, err := cloudevents.NewHTTPTransport(
	cloudevents.WithPort(8181),
	cloudevents.WithPath("/events/")
)
// or a custom transport: t := &custom.MyTransport{Cool:opts}

c, err := cloudevents.NewClient(t, opts...)

Checkout the sample sender and receiver applications for working demo.

Documentation

Index

Constants

View Source
const (
	ApplicationXML                  = cloudevents.ApplicationXML
	ApplicationJSON                 = cloudevents.ApplicationJSON
	ApplicationCloudEventsJSON      = cloudevents.ApplicationCloudEventsJSON
	ApplicationCloudEventsBatchJSON = cloudevents.ApplicationCloudEventsBatchJSON
	Base64                          = cloudevents.Base64

	VersionV01 = cloudevents.CloudEventsVersionV01
	VersionV02 = cloudevents.CloudEventsVersionV02
	VersionV03 = cloudevents.CloudEventsVersionV03

	HTTPBinaryV01     = http.BinaryV01
	HTTPStructuredV01 = http.StructuredV01
	HTTPBinaryV02     = http.BinaryV02
	HTTPStructuredV02 = http.StructuredV02
	HTTPBinaryV03     = http.BinaryV03
	HTTPStructuredV03 = http.StructuredV03
	HTTPBatchedV03    = http.BatchedV03

	Binary     = http.Binary
	Structured = http.Structured
)

Variables

View Source
var (
	StringOfApplicationJSON                 = cloudevents.StringOfApplicationJSON
	StringOfApplicationXML                  = cloudevents.StringOfApplicationXML
	StringOfApplicationCloudEventsJSON      = cloudevents.StringOfApplicationCloudEventsJSON
	StringOfApplicationCloudEventsBatchJSON = cloudevents.StringOfApplicationCloudEventsBatchJSON
	StringOfBase64                          = cloudevents.StringOfBase64

	NewClient        = client.New
	NewDefaultClient = client.NewDefault

	WithEventDefaulter = client.WithEventDefaulter
	WithUUIDs          = client.WithUUIDs
	WithTimeNow        = client.WithTimeNow
	WithConverterFn    = client.WithConverterFn

	NewEvent = cloudevents.New

	EnableTracing = observability.EnableTracing

	ContextWithTarget   = context.WithTarget
	TargetFromContext   = context.TargetFrom
	ContextWithEncoding = context.WithEncoding
	EncodingFromContext = context.EncodingFrom

	ParseTimestamp = types.ParseTimestamp
	ParseURLRef    = types.ParseURLRef

	NewHTTPTransport = http.New

	WithTarget               = http.WithTarget
	WithMethod               = http.WithMethod
	WitHHeader               = http.WithHeader
	WithShutdownTimeout      = http.WithShutdownTimeout
	WithEncoding             = http.WithEncoding
	WithContextBasedEncoding = http.WithContextBasedEncoding
	WithBinaryEncoding       = http.WithBinaryEncoding
	WithStructuredEncoding   = http.WithStructuredEncoding
	WithPort                 = http.WithPort
	WithPath                 = http.WithPath
	WithMiddleware           = http.WithMiddleware
	WithLongPollTarget       = http.WithLongPollTarget

	HTTPTransportContextFrom = http.TransportContextFrom
	ContextWithHeader        = http.ContextWithHeader
)

Functions

This section is empty.

Types

type Client

type Client = client.Client

type ClientOption

type ClientOption client.Option

type ConvertFn

type ConvertFn = client.ConvertFn

type Event

type Event = cloudevents.Event

type EventContext

type EventContext = cloudevents.EventContext

type EventContextV01

type EventContextV01 = cloudevents.EventContextV01

type EventContextV02

type EventContextV02 = cloudevents.EventContextV02

type EventContextV03

type EventContextV03 = cloudevents.EventContextV03

type EventResponse

type EventResponse = cloudevents.EventResponse

type HTTPEncoding

type HTTPEncoding = http.Encoding

type HTTPOption

type HTTPOption http.Option

type HTTPTransport

type HTTPTransport = http.Transport

type HTTPTransportContext

type HTTPTransportContext = http.TransportContext

type HTTPTransportResponseContext

type HTTPTransportResponseContext = http.TransportResponseContext

type Timestamp

type Timestamp = types.Timestamp

type URLRef

type URLRef = types.URLRef

Directories

Path Synopsis
binding
cmd
observability
opencensus Module
opentelemetry Module
pkg
binding
Package binding is for implementing transport bindings and intermediaries like importers, brokers or channels that forward messages between bindings.
Package binding is for implementing transport bindings and intermediaries like importers, brokers or channels that forward messages between bindings.
cloudevents
Package cloudevents provides primitives to work with CloudEvents specification: https://github.com/cloudevents/spec.
Package cloudevents provides primitives to work with CloudEvents specification: https://github.com/cloudevents/spec.
cloudevents/client
Package client holds the recommended entry points for interacting with the CloudEvents Golang SDK.
Package client holds the recommended entry points for interacting with the CloudEvents Golang SDK.
cloudevents/context
Package context holds the last resort overrides and fyi objects that can be passed to clients and transports added to context.Context objects.
Package context holds the last resort overrides and fyi objects that can be passed to clients and transports added to context.Context objects.
cloudevents/datacodec
Package datacodec holds the data codec registry and adds known encoders and decoders supporting media types such as `application/json` and `application/xml`.
Package datacodec holds the data codec registry and adds known encoders and decoders supporting media types such as `application/json` and `application/xml`.
cloudevents/datacodec/json
Package json holds the encoder/decoder implementation for `application/json`.
Package json holds the encoder/decoder implementation for `application/json`.
cloudevents/datacodec/xml
Package xml holds the encoder/decoder implementation for `application/xml`.
Package xml holds the encoder/decoder implementation for `application/xml`.
cloudevents/observability
Package observability holds metrics and tracing recording implementations.
Package observability holds metrics and tracing recording implementations.
cloudevents/transport
Package transport defines interfaces to decouple the client package from transport implementations.
Package transport defines interfaces to decouple the client package from transport implementations.
cloudevents/transport/amqp
Package amqp implements the CloudEvent transport implementation using amqp.
Package amqp implements the CloudEvent transport implementation using amqp.
cloudevents/transport/http
Package http implements the CloudEvent transport implementation using HTTP.
Package http implements the CloudEvent transport implementation using HTTP.
cloudevents/transport/nats
Package nats implements the CloudEvent transport implementation using NATS.
Package nats implements the CloudEvent transport implementation using NATS.
cloudevents/transport/pubsub
Package pubsub implements the CloudEvent transport implementation using pubsub.
Package pubsub implements the CloudEvent transport implementation using pubsub.
cloudevents/types
Package types provides custom types to support CloudEvents.
Package types provides custom types to support CloudEvents.
protocol
amqp Module
kafka_sarama Module
mqtt_paho Module
nats Module
pubsub Module
stan Module
ws Module
samples
amqp Module
gochan Module
http Module
kafka Module
mqtt Module
nats Module
pubsub Module
stan Module
ws Module
sql module
test
benchmark Module
integration Module
observability Module
tools module
v2
protocol/amqp Module
protocol/nats Module
protocol/stan Module
samples Module
test Module
tools Module

Jump to

Keyboard shortcuts

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