diff options
| author | mo khan <mo@mokhan.ca> | 2025-07-22 17:35:49 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-07-22 17:35:49 -0600 |
| commit | 20ef0d92694465ac86b550df139e8366a0a2b4fa (patch) | |
| tree | 3f14589e1ce6eb9306a3af31c3a1f9e1af5ed637 /vendor/github.com/authzed/authzed-go/pkg/requestmeta | |
| parent | 44e0d272c040cdc53a98b9f1dc58ae7da67752e6 (diff) | |
feat: connect to spicedb
Diffstat (limited to 'vendor/github.com/authzed/authzed-go/pkg/requestmeta')
| -rw-r--r-- | vendor/github.com/authzed/authzed-go/pkg/requestmeta/requestmeta.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/github.com/authzed/authzed-go/pkg/requestmeta/requestmeta.go b/vendor/github.com/authzed/authzed-go/pkg/requestmeta/requestmeta.go new file mode 100644 index 0000000..ca01217 --- /dev/null +++ b/vendor/github.com/authzed/authzed-go/pkg/requestmeta/requestmeta.go @@ -0,0 +1,65 @@ +package requestmeta + +import ( + "context" + + "google.golang.org/grpc/metadata" +) + +// RequestMetadataHeaderKey defines a key in the request metadata header. +type RequestMetadataHeaderKey string + +// BoolRequestMetadataHeaderKey defines a key for a boolean value in the request metadata header. +type BoolRequestMetadataHeaderKey RequestMetadataHeaderKey + +const ( + // RequestServerVersion, if specified in a request header, asks SpiceDB to return its + // server version in the response header (if supported). + // Value: `1` + RequestServerVersion BoolRequestMetadataHeaderKey = "io.spicedb.requestversion" + + // RequestDebugInformation, if specified in a request header, asks SpiceDB to return debug information + // for the API call (if applicable and supported). + // NOTE: deprecated in favor of setting with_tracing on Check requests. + // Value: `1` + RequestDebugInformation BoolRequestMetadataHeaderKey = "io.spicedb.requestdebuginfo" + + // RequestOverlapKey, if specified in a request header, indicates to SpiceDB + // that all requests with the same overlap value should be protected from + // the New Enemy Problem. This is only used with the CockroachDB datastore, + // and only if user-provided request overlap is enabled. + RequestOverlapKey RequestMetadataHeaderKey = "io.spicedb.requestoverlapkey" + + // RequestIDKey, if specified in a request header, will propagate the given string value + // through SpiceDB for the lifetime of the request. This can be used to correlate logs + // and traces with a specific request. + RequestIDKey RequestMetadataHeaderKey = "x-request-id" +) + +// AddRequestHeaders returns a new context with the given values as request headers. +func AddRequestHeaders(ctx context.Context, keys ...BoolRequestMetadataHeaderKey) context.Context { + values := make(map[RequestMetadataHeaderKey]string, len(keys)) + for _, key := range keys { + values[RequestMetadataHeaderKey(key)] = "1" + } + return SetRequestHeaders(ctx, values) +} + +// SetRequestHeaders returns a new context with the given values as request headers. +func SetRequestHeaders(ctx context.Context, values map[RequestMetadataHeaderKey]string) context.Context { + pairs := make([]string, 0, len(values)*2) + for key, value := range values { + pairs = append(pairs, string(key)) + pairs = append(pairs, value) + } + return metadata.AppendToOutgoingContext(ctx, pairs...) +} + +// WithOverlapKey returns a new context with the overlap key set. +func WithOverlapKey(ctx context.Context, key string) context.Context { + return metadata.AppendToOutgoingContext(ctx, string(RequestOverlapKey), key) +} + +func WithRequestID(ctx context.Context, requestID string) context.Context { + return metadata.AppendToOutgoingContext(ctx, string(RequestIDKey), requestID) +} |
