44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package setup
|
|
|
|
import (
|
|
"context"
|
|
|
|
"forge.cadoles.com/wpetit/clearcase/internal/config"
|
|
"forge.cadoles.com/wpetit/clearcase/internal/core/model"
|
|
"forge.cadoles.com/wpetit/clearcase/internal/core/port"
|
|
"forge.cadoles.com/wpetit/clearcase/internal/core/service"
|
|
"forge.cadoles.com/wpetit/clearcase/internal/http/handler/webui/issue"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func NewIssueHandlerFromConfig(ctx context.Context, conf *config.Config) (*issue.Handler, error) {
|
|
issueManager, err := NewIssueManagerFromConfig(ctx, conf)
|
|
if err != nil {
|
|
return nil, errors.WithStack(err)
|
|
}
|
|
|
|
return issue.NewHandler(issueManager), nil
|
|
}
|
|
|
|
type authProviderBasedForgeFactory struct {
|
|
provider string
|
|
create func(ctx context.Context, user *model.User) (port.Forge, error)
|
|
}
|
|
|
|
// Create implements service.ForgeFactory.
|
|
func (a *authProviderBasedForgeFactory) Create(ctx context.Context, user *model.User) (port.Forge, error) {
|
|
forge, err := a.create(ctx, user)
|
|
if err != nil {
|
|
return nil, errors.WithStack(err)
|
|
}
|
|
|
|
return forge, nil
|
|
}
|
|
|
|
// Match implements service.ForgeFactory.
|
|
func (a *authProviderBasedForgeFactory) Match(user *model.User) bool {
|
|
return user.Provider == a.provider
|
|
}
|
|
|
|
var _ service.ForgeFactory = &authProviderBasedForgeFactory{}
|