Documentation ¶
Index ¶
- func APITokenAuthMiddleware(token string) func(next http.Handler) http.Handler
- func CleanPathMiddleware(next http.Handler) http.Handler
- func ConvertEventToBytes(event interface{}, contentType string) ([]byte, error)
- func GetStatusCodeFromMetadata(metadata map[string]string) int
- func MaxBodySizeMiddleware(maxSize int64) func(next http.Handler) http.Handler
- func StripSlashesMiddleware(next http.Handler) http.Handler
- func UniversalHTTPHandler[T proto.Message, U proto.Message](handler func(ctx context.Context, in T) (U, error), ...) http.HandlerFunc
- type API
- type APIOpts
- type BulkGetRequest
- type BulkGetResponse
- type BulkPublishResponse
- type BulkPublishResponseFailedEntry
- type ErrorResponse
- type NewServerOpts
- type OutputBindingRequest
- type QueryItem
- type QueryResponse
- type Server
- type ServerConfig
- type UniversalHTTPHandlerOpts
- type UniversalHTTPRawResponse
- type UnsubscribeConfigurationResponse
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func APITokenAuthMiddleware ¶
APITokenAuthMiddleware enforces authentication using the dapr-api-token header.
func CleanPathMiddleware ¶
CleanPathMiddleware middleware will clean out double slash mistakes from a user's request path. For example, if a user requests /users//1 or //users////1 will both be treated as: /users/1
This is a modified version of the code from https://github.com/go-chi/chi/blob/v5.0.8/middleware/clean_path.go Original code Copyright (c) 2015-present Peter Kieltyka (https://github.com/pkieltyka), Google Inc. Original code license: MIT: https://github.com/go-chi/chi/blob/v5.0.8/LICENSE
func ConvertEventToBytes ¶
func GetStatusCodeFromMetadata ¶
GetStatusCodeFromMetadata extracts the http status code from the metadata if it exists.
func MaxBodySizeMiddleware ¶
MaxBodySizeMiddleware limits the body size to the given size (in bytes).
func StripSlashesMiddleware ¶
StripSlashesMiddleware is a middleware that will match request paths with a trailing slash, strip it from the path and continue routing through the mux, if a route matches, then it will serve the handler.
This is a modified version of the code from https://github.com/go-chi/chi/blob/v5.0.8/middleware/strip.go It does not remove the trailing slash if it matches a route already. Original code Copyright (c) 2015-present Peter Kieltyka (https://github.com/pkieltyka), Google Inc. Original code license: MIT: https://github.com/go-chi/chi/blob/v5.0.8/LICENSE
func UniversalHTTPHandler ¶
func UniversalHTTPHandler[T proto.Message, U proto.Message]( handler func(ctx context.Context, in T) (U, error), opts UniversalHTTPHandlerOpts[T, U], ) http.HandlerFunc
UniversalHTTPHandler wraps a Universal API method into a HTTP handler.
Types ¶
type APIOpts ¶
type APIOpts struct { Universal *universal.Universal Channels *channels.Channels DirectMessaging invokev1.DirectMessaging PubSubAdapter runtimePubsub.Adapter Outbox outbox.Outbox SendToOutputBindingFn func(ctx context.Context, name string, req *bindings.InvokeRequest) (*bindings.InvokeResponse, error) TracingSpec config.TracingSpec MetricSpec *config.MetricSpec MaxRequestBodySize int64 // In bytes Healthz healthz.Healthz OutboundHealthz healthz.Healthz }
APIOpts contains the options for NewAPI.
type BulkGetRequest ¶
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 ¶
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 ¶
type BulkPublishResponse struct { FailedEntries []BulkPublishResponseFailedEntry `json:"failedEntries"` ErrorCode string `json:"errorCode,omitempty"` }
BulkPublishResponse is the response for bulk publishing events
type BulkPublishResponseFailedEntry ¶
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 ErrorResponse ¶
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.
func (ErrorResponse) JSONErrorValue ¶
func (e ErrorResponse) JSONErrorValue() []byte
JSONErrorValue implements errorResponseValue.
type NewServerOpts ¶
type NewServerOpts struct { API API Config ServerConfig TracingSpec config.TracingSpec MetricSpec config.MetricSpec Middleware middleware.HTTP 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 ¶
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 ¶
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 ServerConfig ¶
type ServerConfig struct { AppID string HostAddress string Port int APIListenAddresses []string PublicPort *int PublicListenAddress string ProfilePort int AllowedOrigins string EnableProfiling bool MaxRequestBodySize int // In bytes UnixDomainSocket string ReadBufferSize int EnableAPILogging bool APILoggingObfuscateURLs bool APILogHealthChecks bool }
ServerConfig holds config values for an HTTP server.
type UniversalHTTPHandlerOpts ¶
type UniversalHTTPHandlerOpts[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(r *http.Request, 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 UniversalHTTPHandler method.
type UniversalHTTPRawResponse ¶
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.