Skip to content

Commit c9a52c5

Browse files
committed
feat: engine should not depend on client module
1 parent a5696f0 commit c9a52c5

2 files changed

Lines changed: 49 additions & 35 deletions

File tree

client/client.go

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import (
88
"time"
99

1010
"connectrpc.com/connect"
11-
"google.golang.org/protobuf/proto"
1211

1312
"github.com/docker/secrets-engine/x/api"
13+
"github.com/docker/secrets-engine/x/api/resolver"
1414
v1 "github.com/docker/secrets-engine/x/api/resolver/v1"
1515
"github.com/docker/secrets-engine/x/api/resolver/v1/resolverv1connect"
1616
"github.com/docker/secrets-engine/x/secrets"
@@ -74,10 +74,14 @@ type config struct {
7474
}
7575

7676
type client struct {
77-
resolverClient resolverv1connect.ResolverServiceClient
77+
resolverClient secrets.Resolver
7878
listClient resolverv1connect.ListServiceClient
7979
}
8080

81+
func (c client) GetSecrets(ctx context.Context, pattern secrets.Pattern) ([]secrets.Envelope, error) {
82+
return c.resolverClient.GetSecrets(ctx, pattern)
83+
}
84+
8185
type Client interface {
8286
secrets.Resolver
8387

@@ -118,43 +122,11 @@ func New(options ...Option) (Client, error) {
118122
Timeout: cfg.requestTimeout,
119123
}
120124
return &client{
121-
resolverClient: resolverv1connect.NewResolverServiceClient(c, "http://unix"),
125+
resolverClient: resolver.NewResolverClient(c),
122126
listClient: resolverv1connect.NewListServiceClient(c, "http://unix"),
123127
}, nil
124128
}
125129

126-
func (c client) GetSecrets(ctx context.Context, pattern secrets.Pattern) ([]secrets.Envelope, error) {
127-
req := connect.NewRequest(v1.GetSecretsRequest_builder{
128-
Pattern: proto.String(pattern.String()),
129-
}.Build())
130-
resp, err := c.resolverClient.GetSecrets(ctx, req)
131-
if err != nil {
132-
if connect.CodeOf(err) == connect.CodeNotFound {
133-
err = secrets.ErrNotFound
134-
}
135-
return nil, err
136-
}
137-
138-
var envelopes []secrets.Envelope
139-
for _, item := range resp.Msg.GetEnvelopes() {
140-
id, err := secrets.ParseID(item.GetId())
141-
if err != nil {
142-
continue
143-
}
144-
envelopes = append(envelopes, secrets.Envelope{
145-
ID: id,
146-
Value: item.GetValue(),
147-
Metadata: item.GetMetadata(),
148-
Provider: item.GetProvider(),
149-
Version: item.GetVersion(),
150-
CreatedAt: item.GetCreatedAt().AsTime(),
151-
ResolvedAt: item.GetResolvedAt().AsTime(),
152-
ExpiresAt: item.GetExpiresAt().AsTime(),
153-
})
154-
}
155-
return envelopes, nil
156-
}
157-
158130
func (c client) ListPlugins(ctx context.Context) ([]PluginInfo, error) {
159131
req := connect.NewRequest(v1.ListPluginsRequest_builder{}.Build())
160132
resp, err := c.listClient.ListPlugins(ctx, req)

x/api/resolver/resolver.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,45 @@ func (r resolverService) GetSecrets(ctx context.Context, c *connect.Request[reso
5959
Envelopes: items,
6060
}.Build()), nil
6161
}
62+
63+
var _ secrets.Resolver = &resolverClient{}
64+
65+
type resolverClient struct {
66+
resolverClient resolverv1connect.ResolverServiceClient
67+
}
68+
69+
func NewResolverClient(httpClient connect.HTTPClient) secrets.Resolver {
70+
return &resolverClient{resolverClient: resolverv1connect.NewResolverServiceClient(httpClient, "http://unix")}
71+
}
72+
73+
func (r resolverClient) GetSecrets(ctx context.Context, pattern secrets.Pattern) ([]secrets.Envelope, error) {
74+
req := connect.NewRequest(resolverv1.GetSecretsRequest_builder{
75+
Pattern: proto.String(pattern.String()),
76+
}.Build())
77+
resp, err := r.resolverClient.GetSecrets(ctx, req)
78+
if err != nil {
79+
if connect.CodeOf(err) == connect.CodeNotFound {
80+
err = secrets.ErrNotFound
81+
}
82+
return nil, err
83+
}
84+
85+
var envelopes []secrets.Envelope
86+
for _, item := range resp.Msg.GetEnvelopes() {
87+
id, err := secrets.ParseID(item.GetId())
88+
if err != nil {
89+
continue
90+
}
91+
envelopes = append(envelopes, secrets.Envelope{
92+
ID: id,
93+
Value: item.GetValue(),
94+
Metadata: item.GetMetadata(),
95+
Provider: item.GetProvider(),
96+
Version: item.GetVersion(),
97+
CreatedAt: item.GetCreatedAt().AsTime(),
98+
ResolvedAt: item.GetResolvedAt().AsTime(),
99+
ExpiresAt: item.GetExpiresAt().AsTime(),
100+
})
101+
}
102+
return envelopes, nil
103+
}

0 commit comments

Comments
 (0)