auth/internal/client/usecase.go

50 lines
1.1 KiB
Go
Raw Permalink Normal View History

2021-09-23 23:06:22 +00:00
package client
import (
"context"
"source.toby3d.me/toby3d/auth/internal/domain"
2021-09-23 23:06:22 +00:00
)
type (
UseCase interface {
// Discovery returns client public information bu ClientID URL.
Discovery(ctx context.Context, id domain.ClientID) (*domain.Client, error)
}
dummyClientUseCase struct{}
stubClientUseCase struct {
client *domain.Client
error error
}
)
2021-12-29 20:53:31 +00:00
var ErrInvalidMe error = domain.NewError(
domain.ErrorCodeInvalidRequest,
"cannot fetch client endpoints on provided me",
"",
)
// NewDummyClientUseCase returns dummy [UseCase] what do nothing.
func NewDummyClientUseCase() UseCase {
return dummyClientUseCase{}
}
func (dummyClientUseCase) Discovery(_ context.Context, _ domain.ClientID) (*domain.Client, error) {
return nil, nil
}
// NewDummyClientUseCase returns stub [UseCase] what always returns data
// provided here.
func NewStubClientUseCase(client *domain.Client, err error) UseCase {
return &stubClientUseCase{
client: client,
error: err,
}
}
func (ucase *stubClientUseCase) Discovery(_ context.Context, _ domain.ClientID) (*domain.Client, error) {
return ucase.client, ucase.error
}