From 1da7b39b9a4ea8451955264bae2169a61d9623a0 Mon Sep 17 00:00:00 2001 From: Krish Suchak Date: Wed, 17 Jun 2026 17:34:12 -0400 Subject: [PATCH] feat(sdk): DSPX-2754 add DynamicValueMapping service client wrapper Add the sdkconnect wrapper for the DynamicValueMappingService and register it in the SDK, and bump protocol/go to v0.34.0 (which carries the dynamicvaluemapping package). This is the sdk step of the DSPX-2754 consumer split (protocol/go #3580 released first; service consumer PR #3568 depends on this sdk release). Signed-off-by: Krish Suchak --- sdk/codegen/main.go | 4 ++ sdk/go.mod | 2 +- sdk/go.sum | 4 +- sdk/sdk.go | 2 + sdk/sdkconnect/dynamicvaluemapping.go | 70 +++++++++++++++++++++++++++ 5 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 sdk/sdkconnect/dynamicvaluemapping.go diff --git a/sdk/codegen/main.go b/sdk/codegen/main.go index f917a9e5fc..b9dc704a02 100644 --- a/sdk/codegen/main.go +++ b/sdk/codegen/main.go @@ -66,6 +66,10 @@ var clientsToGenerateList = []runner.ClientsToGenerate{ GrpcClientInterface: "SubjectMappingServiceClient", GrpcPackagePath: "github.com/opentdf/platform/protocol/go/policy/subjectmapping", }, + { + GrpcClientInterface: "DynamicValueMappingServiceClient", + GrpcPackagePath: "github.com/opentdf/platform/protocol/go/policy/dynamicvaluemapping", + }, { GrpcClientInterface: "UnsafeServiceClient", GrpcPackagePath: "github.com/opentdf/platform/protocol/go/policy/unsafe", diff --git a/sdk/go.mod b/sdk/go.mod index 011cd08594..161f2edba4 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 github.com/lestrrat-go/jwx/v2 v2.1.6 github.com/opentdf/platform/lib/ocrypto v0.12.0 - github.com/opentdf/platform/protocol/go v0.33.1 + github.com/opentdf/platform/protocol/go v0.34.0 github.com/stretchr/testify v1.11.1 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/oauth2 v0.36.0 diff --git a/sdk/go.sum b/sdk/go.sum index 04996fb39b..2bf829d298 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -50,8 +50,8 @@ github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNB github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/opentdf/platform/lib/ocrypto v0.12.0 h1:N449KWy7VdMO0JwfsrG0kM6Uy8VrEnVvBciwzRHwnlg= github.com/opentdf/platform/lib/ocrypto v0.12.0/go.mod h1:51UTmAWO6C8ghuMXiktpn63N+fLUQxY6zo8D65Ly0wQ= -github.com/opentdf/platform/protocol/go v0.33.1 h1:nLg5D++Oo1hlgPD6nR+AchnfpkZeOQFGzJMz2MmJM4U= -github.com/opentdf/platform/protocol/go v0.33.1/go.mod h1:6A0vQJ5D4ZTLReWAp8Y/7jTFzlYCmL/IfMJWDHZS6M0= +github.com/opentdf/platform/protocol/go v0.34.0 h1:HJstzUyOnbE8c39UIAf3ASkjkkqLEMxy/D0oiUWuzSA= +github.com/opentdf/platform/protocol/go v0.34.0/go.mod h1:6A0vQJ5D4ZTLReWAp8Y/7jTFzlYCmL/IfMJWDHZS6M0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/sdk/sdk.go b/sdk/sdk.go index fa809e6e12..01f2ae04d1 100644 --- a/sdk/sdk.go +++ b/sdk/sdk.go @@ -96,6 +96,7 @@ type SDK struct { RegisteredResources sdkconnect.RegisteredResourcesServiceClient ResourceMapping sdkconnect.ResourceMappingServiceClient SubjectMapping sdkconnect.SubjectMappingServiceClient + DynamicValueMapping sdkconnect.DynamicValueMappingServiceClient Unsafe sdkconnect.UnsafeServiceClient KeyManagement sdkconnect.KeyManagementServiceClient wellknownConfiguration sdkconnect.WellKnownServiceClient @@ -229,6 +230,7 @@ func New(platformEndpoint string, opts ...Option) (*SDK, error) { RegisteredResources: sdkconnect.NewRegisteredResourcesServiceClientConnectWrapper(platformConn.Client, platformConn.Endpoint, platformConn.Options...), ResourceMapping: sdkconnect.NewResourceMappingServiceClientConnectWrapper(platformConn.Client, platformConn.Endpoint, platformConn.Options...), SubjectMapping: sdkconnect.NewSubjectMappingServiceClientConnectWrapper(platformConn.Client, platformConn.Endpoint, platformConn.Options...), + DynamicValueMapping: sdkconnect.NewDynamicValueMappingServiceClientConnectWrapper(platformConn.Client, platformConn.Endpoint, platformConn.Options...), Unsafe: sdkconnect.NewUnsafeServiceClientConnectWrapper(platformConn.Client, platformConn.Endpoint, platformConn.Options...), KeyAccessServerRegistry: sdkconnect.NewKeyAccessServerRegistryServiceClientConnectWrapper(platformConn.Client, platformConn.Endpoint, platformConn.Options...), Authorization: sdkconnect.NewAuthorizationServiceClientConnectWrapper(platformConn.Client, platformConn.Endpoint, platformConn.Options...), diff --git a/sdk/sdkconnect/dynamicvaluemapping.go b/sdk/sdkconnect/dynamicvaluemapping.go new file mode 100644 index 0000000000..7c74300686 --- /dev/null +++ b/sdk/sdkconnect/dynamicvaluemapping.go @@ -0,0 +1,70 @@ +// Wrapper for DynamicValueMappingServiceClient (generated code) DO NOT EDIT +package sdkconnect + +import ( + "connectrpc.com/connect" + "context" + "github.com/opentdf/platform/protocol/go/policy/dynamicvaluemapping" + "github.com/opentdf/platform/protocol/go/policy/dynamicvaluemapping/dynamicvaluemappingconnect" +) + +type DynamicValueMappingServiceClientConnectWrapper struct { + dynamicvaluemappingconnect.DynamicValueMappingServiceClient +} + +func NewDynamicValueMappingServiceClientConnectWrapper(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) *DynamicValueMappingServiceClientConnectWrapper { + return &DynamicValueMappingServiceClientConnectWrapper{DynamicValueMappingServiceClient: dynamicvaluemappingconnect.NewDynamicValueMappingServiceClient(httpClient, baseURL, opts...)} +} + +type DynamicValueMappingServiceClient interface { + ListDynamicValueMappings(ctx context.Context, req *dynamicvaluemapping.ListDynamicValueMappingsRequest) (*dynamicvaluemapping.ListDynamicValueMappingsResponse, error) + GetDynamicValueMapping(ctx context.Context, req *dynamicvaluemapping.GetDynamicValueMappingRequest) (*dynamicvaluemapping.GetDynamicValueMappingResponse, error) + CreateDynamicValueMapping(ctx context.Context, req *dynamicvaluemapping.CreateDynamicValueMappingRequest) (*dynamicvaluemapping.CreateDynamicValueMappingResponse, error) + UpdateDynamicValueMapping(ctx context.Context, req *dynamicvaluemapping.UpdateDynamicValueMappingRequest) (*dynamicvaluemapping.UpdateDynamicValueMappingResponse, error) + DeleteDynamicValueMapping(ctx context.Context, req *dynamicvaluemapping.DeleteDynamicValueMappingRequest) (*dynamicvaluemapping.DeleteDynamicValueMappingResponse, error) +} + +func (w *DynamicValueMappingServiceClientConnectWrapper) ListDynamicValueMappings(ctx context.Context, req *dynamicvaluemapping.ListDynamicValueMappingsRequest) (*dynamicvaluemapping.ListDynamicValueMappingsResponse, error) { + // Wrap Connect RPC client request + res, err := w.DynamicValueMappingServiceClient.ListDynamicValueMappings(ctx, connect.NewRequest(req)) + if res == nil { + return nil, err + } + return res.Msg, err +} + +func (w *DynamicValueMappingServiceClientConnectWrapper) GetDynamicValueMapping(ctx context.Context, req *dynamicvaluemapping.GetDynamicValueMappingRequest) (*dynamicvaluemapping.GetDynamicValueMappingResponse, error) { + // Wrap Connect RPC client request + res, err := w.DynamicValueMappingServiceClient.GetDynamicValueMapping(ctx, connect.NewRequest(req)) + if res == nil { + return nil, err + } + return res.Msg, err +} + +func (w *DynamicValueMappingServiceClientConnectWrapper) CreateDynamicValueMapping(ctx context.Context, req *dynamicvaluemapping.CreateDynamicValueMappingRequest) (*dynamicvaluemapping.CreateDynamicValueMappingResponse, error) { + // Wrap Connect RPC client request + res, err := w.DynamicValueMappingServiceClient.CreateDynamicValueMapping(ctx, connect.NewRequest(req)) + if res == nil { + return nil, err + } + return res.Msg, err +} + +func (w *DynamicValueMappingServiceClientConnectWrapper) UpdateDynamicValueMapping(ctx context.Context, req *dynamicvaluemapping.UpdateDynamicValueMappingRequest) (*dynamicvaluemapping.UpdateDynamicValueMappingResponse, error) { + // Wrap Connect RPC client request + res, err := w.DynamicValueMappingServiceClient.UpdateDynamicValueMapping(ctx, connect.NewRequest(req)) + if res == nil { + return nil, err + } + return res.Msg, err +} + +func (w *DynamicValueMappingServiceClientConnectWrapper) DeleteDynamicValueMapping(ctx context.Context, req *dynamicvaluemapping.DeleteDynamicValueMappingRequest) (*dynamicvaluemapping.DeleteDynamicValueMappingResponse, error) { + // Wrap Connect RPC client request + res, err := w.DynamicValueMappingServiceClient.DeleteDynamicValueMapping(ctx, connect.NewRequest(req)) + if res == nil { + return nil, err + } + return res.Msg, err +}