http

package
v1.11.0-rc.6 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConvertEventToBytes added in v1.10.0

func ConvertEventToBytes(event interface{}, contentType string) ([]byte, error)

func GetStatusCodeFromMetadata

func GetStatusCodeFromMetadata(metadata map[string]string) int

GetStatusCodeFromMetadata extracts the http status code from the metadata if it exists.

func UniversalFastHTTPHandler added in v1.10.1

func UniversalFastHTTPHandler[T proto.Message, U proto.Message](
	handler func(ctx context.Context, in T) (U, error),
	opts UniversalFastHTTPHandlerOpts[T, U],
) fasthttp.RequestHandler

UniversalFastHTTPHandler wraps a UniversalAPI method into a FastHTTP handler.

Types

type API

type API interface {
	APIEndpoints() []Endpoint
	PublicEndpoints() []Endpoint
	MarkStatusAsReady()
	MarkStatusAsOutboundReady()
	SetAppChannel(appChannel channel.AppChannel)
	SetHTTPEndpointsAppChannel(appChannel channel.HTTPEndpointAppChannel)
	SetDirectMessaging(directMessaging messaging.DirectMessaging)
	SetActorRuntime(actor actors.Actors)
}

API returns a list of HTTP endpoints for Dapr.

func NewAPI

func NewAPI(opts APIOpts) API

NewAPI returns a new API.

type APIOpts added in v1.10.0

type APIOpts struct {
	AppID                       string
	AppChannel                  channel.AppChannel
	HTTPEndpointsAppChannel     channel.HTTPEndpointAppChannel
	DirectMessaging             messaging.DirectMessaging
	Resiliency                  resiliency.Provider
	CompStore                   *compstore.ComponentStore
	PubsubAdapter               runtimePubsub.Adapter
	Actor                       actors.Actors
	SendToOutputBindingFn       func(name string, req *bindings.InvokeRequest) (*bindings.InvokeResponse, error)
	TracingSpec                 config.TracingSpec
	Shutdown                    func()
	GetComponentsCapabilitiesFn func() map[string][]string
	MaxRequestBodySize          int64 // In bytes
	IsStreamingEnabled          bool
}

APIOpts contains the options for NewAPI.

type BulkGetRequest added in v0.10.0

type BulkGetRequest struct {
	Metadata    map[string]string `json:"metadata"`
	Keys        []string          `json:"keys"`
	Parallelism int               `json:"parallelism"`
}

BulkGetRequest is the request object to get a list of values for multiple keys from a state store.

type BulkGetResponse added in v0.10.0

type BulkGetResponse struct {
	Key      string            `json:"key"`
	Data     json.RawMessage   `json:"data,omitempty"`
	ETag     *string           `json:"etag,omitempty"`
	Metadata map[string]string `json:"metadata,omitempty"`
	Error    string            `json:"error,omitempty"`
}

BulkGetResponse is the response object for a state bulk get operation.

type BulkPublishResponse added in v1.10.0

type BulkPublishResponse struct {
	FailedEntries []BulkPublishResponseFailedEntry `json:"failedEntries"`
	ErrorCode     string                           `json:"errorCode,omitempty"`
}

BulkPublishResponse is the response for bulk publishing events

type BulkPublishResponseFailedEntry added in v1.10.0

type BulkPublishResponseFailedEntry struct {
	EntryId string `json:"entryId"` //nolint:stylecheck
	Error   string `json:"error,omitempty"`
}

BulkPublishResponseEntry is an object representing a single entry in bulk publish response

type Endpoint

type Endpoint struct {
	Methods           []string
	Route             string
	Version           string
	Alias             string
	KeepParamUnescape bool // keep the param in path unescaped
	Handler           fasthttp.RequestHandler
	AlwaysAllowed     bool // Endpoint is always allowed regardless of API access rules
	IsHealthCheck     bool // Mark endpoint as healthcheck - for API logging purposes
}

Endpoint is a collection of route information for an Dapr API.

If an Alias, e.g. "hello", is provided along with the Route, e.g. "invoke/app-id/method/hello" and the Version, "v1.0", then two endpoints will be installed instead of one. Besiding the canonical Dapr API URL "/v1.0/invoke/app-id/method/hello", one another URL "/hello" is provided for the Alias. When Alias URL is used, extra infos are required to pass through HTTP headers, for example, application's ID.

func (Endpoint) IsAllowed added in v1.11.0

func (endpoint Endpoint) IsAllowed(allowedAPIs []config.APIAccessRule, deniedAPIs []config.APIAccessRule) bool

IsAllowed returns true if the endpoint is allowed given the API allowlist/denylist.

type ErrorResponse

type ErrorResponse struct {
	ErrorCode string `json:"errorCode"`
	Message   string `json:"message"`
}

ErrorResponse is an HTTP response message sent back to calling clients by the Dapr Runtime HTTP API.

func NewErrorResponse

func NewErrorResponse(errorCode, message string) ErrorResponse

NewErrorResponse returns a new ErrorResponse.

type NewServerOpts added in v1.9.0

type NewServerOpts struct {
	API         API
	Config      ServerConfig
	TracingSpec config.TracingSpec
	MetricSpec  config.MetricSpec
	Pipeline    httpMiddleware.Pipeline
	APISpec     config.APISpec
}

NewServerOpts are the options for NewServer.

type OutputBindingRequest

type OutputBindingRequest struct {
	Metadata  map[string]string `json:"metadata"`
	Data      interface{}       `json:"data"`
	Operation string            `json:"operation"`
}

OutputBindingRequest is the request object to invoke an output binding.

type QueryItem added in v1.5.0

type QueryItem struct {
	Key   string          `json:"key"`
	Data  json.RawMessage `json:"data"`
	ETag  *string         `json:"etag,omitempty"`
	Error string          `json:"error,omitempty"`
}

QueryItem is an object representing a single entry in query results.

type QueryResponse added in v1.5.0

type QueryResponse struct {
	Results  []QueryItem       `json:"results"`
	Token    string            `json:"token,omitempty"`
	Metadata map[string]string `json:"metadata,omitempty"`
}

QueryResponse is the response object for querying state.

type Server

type Server interface {
	io.Closer
	StartNonBlocking() error
}

Server is an interface for the Dapr HTTP server.

func NewServer

func NewServer(opts NewServerOpts) Server

NewServer returns a new HTTP server.

type ServerConfig

type ServerConfig struct {
	AppID                   string
	HostAddress             string
	Port                    int
	APIListenAddresses      []string
	PublicPort              *int
	ProfilePort             int
	AllowedOrigins          string
	EnableProfiling         bool
	MaxRequestBodySize      int
	UnixDomainSocket        string
	ReadBufferSize          int
	EnableAPILogging        bool
	APILoggingObfuscateURLs bool
	APILogHealthChecks      bool
}

ServerConfig holds config values for an HTTP server.

type UniversalFastHTTPHandlerOpts added in v1.10.1

type UniversalFastHTTPHandlerOpts[T proto.Message, U proto.Message] struct {
	// This modifier allows modifying the input proto object before the handler is called. This property is optional.
	// The input proto object contantains all properties parsed from the request's body (for non-GET requests), and this modifier can alter it for example with properties from the URL (to make APIs RESTful).
	// The modifier should return the modified object.
	InModifier func(reqCtx *fasthttp.RequestCtx, in T) (T, error)

	// This modifier allows modifying the output proto object before the response is sent to the client. This property is optional.
	// This is primarily meant to ensure that existing APIs can be migrated to Universal ones while preserving the same response in case of small differences.
	// The response could be a proto object (which will be serialized with protojson) or any other object (serialized with the standard JSON package). If the response is nil, a 204 (no content) response is sent to the client, with no data in the body.
	// NOTE: Newly-implemented APIs should ensure that on the HTTP endpoint the response matches the protos to offer a consistent experience, and should NOT modify the output before it's sent to the client.
	OutModifier func(out U) (any, error)

	// Status code to return on successful responses.
	// Defaults to 200 (OK) if unset.
	SuccessStatusCode int

	// If true, skips parsing the body of the request in the input proto.
	SkipInputBody bool

	// When true, unpopulated fields in proto responses (i.e. fields whose value is the zero one) are included in the response too.
	// Defaults to false.
	ProtoResponseEmitUnpopulated bool
}

Object containing options for the UniversalFastHTTPHandler method.

type UniversalHTTPRawResponse added in v1.11.0

type UniversalHTTPRawResponse struct {
	// Body of the response.
	Body []byte
	// Optional value for the Content-Type header to send.
	ContentType string
	// Optional status code; if empty, uses the default SuccessStatusCode.
	StatusCode int
}

Contains a pre-serialized response as well as its content type. An OutModifier can return this object if it needs to serialize the response itself.

type UnsubscribeConfigurationResponse added in v1.9.0

type UnsubscribeConfigurationResponse struct {
	Ok      bool   `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"`
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

Jump to

Keyboard shortcuts

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