bindings

package
v0.0.0-...-ebb33e4 Latest Latest
Warning

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

Go to latest
Published: May 18, 2023 License: Apache-2.0 Imports: 7 Imported by: 0

README

Bindings

Bindings provide a common way to trigger an application with events from external systems, or invoke an external system with optional data payloads. Bindings are great for event-driven, on-demand compute and help reduce boilerplate code.

To get started with bindings visit the How To Guide.

To view all the currently supported bindings visit: Dapr bindings.

For detailed binding specs visit Dapr binding specs.

Implementing a new binding

A compliant binding needs to implement at least one interface, depending on the type of binding (Input, Output, or both):

Input binding implement the InputBinding interface defined in input_binding.go

Output binding implement the OutputBinding interface defined in output_binding.go

An output binding can be used to invoke an external system and also to return data from it. Each output binding can decide which operations it supports. This information is communicated to the caller via the Operations() method.

When creating an Output Binding, a list of OperationKind items needs to be returned. For example, if running a component that takes in a SQL query and returns a result set, the OperationKind can be query.

While components are not restricted to a list of supported operations, it's best to use common ones if the operation kind falls under that operation definition. The list of common operations can be found in requests.go.

After implementing a binding, the specification docs need to be updated via a Pull Request: Dapr docs.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PingInpBinding

func PingInpBinding(ctx context.Context, inputBinding InputBinding) error

func PingOutBinding

func PingOutBinding(ctx context.Context, outputBinding OutputBinding) error

Types

type AppResponse

type AppResponse struct {
	Data        interface{}        `json:"data"`
	To          []string           `json:"to"`
	StoreName   string             `json:"storeName"`
	State       []state.SetRequest `json:"state"`
	Concurrency string             `json:"concurrency"`
}

AppResponse is the object describing the response from user code after a bindings event.

type Handler

type Handler func(context.Context, *ReadResponse) ([]byte, error)

Handler is the handler used to invoke the app handler.

type InputBinding

type InputBinding interface {
	// Init passes connection and properties metadata to the binding implementation.
	Init(ctx context.Context, metadata Metadata) error
	// Read is a method that runs in background and triggers the callback function whenever an event arrives.
	Read(ctx context.Context, handler Handler) error
	// Close is a method that closes the connection to the binding. Must be
	// called when the binding is no longer needed to free up resources.
	io.Closer
	GetComponentMetadata() map[string]string
}

InputBinding is the interface to define a binding that triggers on incoming events.

type InputOutputBinding

type InputOutputBinding interface {
	InputBinding
	OutputBinding
}

InputOutputBinding is the interface for bindings that implement both input and output bindings.

type InvokeRequest

type InvokeRequest struct {
	Data      []byte            `json:"data"`
	Metadata  map[string]string `json:"metadata"`
	Operation OperationKind     `json:"operation"`
}

InvokeRequest is the object given to a dapr output binding.

func (*InvokeRequest) GetMetadataAsBool

func (r *InvokeRequest) GetMetadataAsBool(key string) (bool, error)

GetMetadataAsBool parses metadata as bool.

func (*InvokeRequest) GetMetadataAsInt64

func (r *InvokeRequest) GetMetadataAsInt64(key string, bitSize int) (int64, error)

GetMetadataAsInt64 parses metadata as int64.

type InvokeResponse

type InvokeResponse struct {
	Data        []byte            `json:"data"`
	Metadata    map[string]string `json:"metadata"`
	ContentType *string           `json:"contentType,omitempty"`
}

InvokeResponse is the response object returned from an output binding.

type Metadata

type Metadata struct {
	metadata.Base `json:",inline"`
}

Metadata represents a set of binding specific properties.

type OperationKind

type OperationKind string

OperationKind defines an output binding operation.

const (
	GetOperation    OperationKind = "get"
	CreateOperation OperationKind = "create"
	DeleteOperation OperationKind = "delete"
	ListOperation   OperationKind = "list"
)

Non exhaustive list of operations. A binding can add operations that are not in this list.

type OutputBinding

type OutputBinding interface {
	Init(ctx context.Context, metadata Metadata) error
	Invoke(ctx context.Context, req *InvokeRequest) (*InvokeResponse, error)
	Operations() []OperationKind
	GetComponentMetadata() map[string]string
}

OutputBinding is the interface for an output binding, allowing users to invoke remote systems with optional payloads.

type ReadResponse

type ReadResponse struct {
	Data        []byte            `json:"data"`
	Metadata    map[string]string `json:"metadata"`
	ContentType *string           `json:"contentType,omitempty"`
}

ReadResponse is the return object from an dapr input binding.

Directories

Path Synopsis
alicloud
oss
sls
Package apns implements an output binding for Dapr that allows services to send push notifications to Apple devices and Mac computers using Apple's Push Notification Service (APNS).
Package apns implements an output binding for Dapr that allows services to send push notifications to Apple devices and Mac computers using Apple's Push Notification Service (APNS).
aws
s3
ses
sns
sqs
azure
cloudflare
gcp
huawei
obs
rethinkdb
twilio
sms

Jump to

Keyboard shortcuts

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