make client interface
This commit is contained in:
@@ -21,7 +21,7 @@ func WithLogger(logger *zap.SugaredLogger) Option {
|
||||
}
|
||||
|
||||
// WithMetalClient sets the Equinix Metal client used by the service.
|
||||
func WithMetalClient(client *metal.Client) Option {
|
||||
func WithMetalClient(client metal.Client) Option {
|
||||
return func(s *service) error {
|
||||
s.metal = client
|
||||
|
||||
@@ -30,7 +30,7 @@ func WithMetalClient(client *metal.Client) Option {
|
||||
}
|
||||
|
||||
// WithPermissionsClient sets the permissions client used by the service.
|
||||
func WithPermissionsClient(client *permissions.Client) Option {
|
||||
func WithPermissionsClient(client permissions.Client) Option {
|
||||
return func(s *service) error {
|
||||
s.perms = client
|
||||
|
||||
|
||||
@@ -78,13 +78,18 @@ type Service interface {
|
||||
IsAssignableResource(id gidx.PrefixedID) bool
|
||||
}
|
||||
|
||||
// EventPublisher defines the required methods to publish events.
|
||||
type EventPublisher interface {
|
||||
PublishChange(ctx context.Context, subjectType string, change events.ChangeMessage) error
|
||||
}
|
||||
|
||||
var _ Service = &service{}
|
||||
|
||||
type service struct {
|
||||
logger *zap.SugaredLogger
|
||||
publisher *events.Publisher
|
||||
metal *metal.Client
|
||||
perms *permissions.Client
|
||||
publisher EventPublisher
|
||||
metal metal.Client
|
||||
perms permissions.Client
|
||||
idPrefixMap map[string]ObjectType
|
||||
|
||||
rootResource prefixedID
|
||||
@@ -100,7 +105,7 @@ func (r prefixedID) PrefixedID() gidx.PrefixedID {
|
||||
}
|
||||
|
||||
// New creates a new service.
|
||||
func New(publisher *events.Publisher, metal *metal.Client, perms *permissions.Client, options ...Option) (Service, error) {
|
||||
func New(publisher EventPublisher, metal metal.Client, perms permissions.Client, options ...Option) (Service, error) {
|
||||
svc := &service{
|
||||
publisher: publisher,
|
||||
metal: metal,
|
||||
|
||||
Reference in New Issue
Block a user