mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 18:36:30 +02:00
43 lines
829 B
Go
43 lines
829 B
Go
package mcp
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/google/uuid"
|
|
|
|
rfc7591v1 "github.com/pomerium/pomerium/internal/rfc7591"
|
|
"github.com/pomerium/pomerium/pkg/grpc/databroker"
|
|
"github.com/pomerium/pomerium/pkg/protoutil"
|
|
)
|
|
|
|
type Storage struct {
|
|
client databroker.DataBrokerServiceClient
|
|
}
|
|
|
|
// NewStorage creates a new Storage instance.
|
|
func NewStorage(
|
|
client databroker.DataBrokerServiceClient,
|
|
) *Storage {
|
|
return &Storage{
|
|
client: client,
|
|
}
|
|
}
|
|
|
|
func (storage *Storage) RegisterClient(
|
|
ctx context.Context,
|
|
req *rfc7591v1.ClientMetadata,
|
|
) (string, error) {
|
|
data := protoutil.NewAny(req)
|
|
id := uuid.NewString()
|
|
_, err := storage.client.Put(ctx, &databroker.PutRequest{
|
|
Records: []*databroker.Record{{
|
|
Id: id,
|
|
Data: data,
|
|
Type: data.TypeUrl,
|
|
}},
|
|
})
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return id, nil
|
|
}
|