feat: github adapter
This commit is contained in:
58
internal/setup/forge_factories.go
Normal file
58
internal/setup/forge_factories.go
Normal file
@ -0,0 +1,58 @@
|
||||
package setup
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/url"
|
||||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
giteaAdapter "forge.cadoles.com/wpetit/clearcase/internal/adapter/gitea"
|
||||
githubAdapter "forge.cadoles.com/wpetit/clearcase/internal/adapter/github"
|
||||
|
||||
"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"
|
||||
"github.com/google/go-github/v69/github"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func getForgeFactories(conf *config.Config) ([]service.ForgeFactory, error) {
|
||||
forgeFactories := make([]service.ForgeFactory, 0)
|
||||
|
||||
if conf.Auth.Providers.Gitea.Key != "" && conf.Auth.Providers.Gitea.Secret != "" {
|
||||
baseURL, err := url.Parse(conf.Auth.Providers.Gitea.AuthURL)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "could not parse gitea auth url '%s'", conf.Auth.Providers.Gitea.AuthURL)
|
||||
}
|
||||
|
||||
baseURL.Path = ""
|
||||
|
||||
forgeFactories = append(forgeFactories, &authProviderBasedForgeFactory{
|
||||
provider: "gitea",
|
||||
create: func(ctx context.Context, user *model.User) (port.Forge, error) {
|
||||
client, err := gitea.NewClient(baseURL.String(), gitea.SetToken(user.AccessToken))
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
forge := giteaAdapter.NewForge(client)
|
||||
|
||||
return forge, nil
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
if conf.Auth.Providers.Github.Key != "" && conf.Auth.Providers.Github.Secret != "" {
|
||||
forgeFactories = append(forgeFactories, &authProviderBasedForgeFactory{
|
||||
provider: "github",
|
||||
create: func(ctx context.Context, user *model.User) (port.Forge, error) {
|
||||
client := github.NewClient(nil).WithAuthToken(user.AccessToken)
|
||||
forge := githubAdapter.NewForge(client)
|
||||
|
||||
return forge, nil
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return forgeFactories, nil
|
||||
}
|
@ -2,13 +2,8 @@ package setup
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/url"
|
||||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
giteaAdapter "forge.cadoles.com/wpetit/clearcase/internal/adapter/gitea"
|
||||
"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"
|
||||
"github.com/bornholm/genai/llm/provider"
|
||||
"github.com/pkg/errors"
|
||||
@ -29,29 +24,9 @@ func NewIssueManagerFromConfig(ctx context.Context, conf *config.Config) (*servi
|
||||
return nil, errors.Wrapf(err, "could not create llm client '%s'", conf.LLM.Provider.Name)
|
||||
}
|
||||
|
||||
forgeFactories := make([]service.ForgeFactory, 0)
|
||||
|
||||
if conf.Auth.Providers.Gitea.Key != "" && conf.Auth.Providers.Gitea.Secret != "" {
|
||||
baseURL, err := url.Parse(conf.Auth.Providers.Gitea.AuthURL)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "could not parse gitea auth url '%s'", conf.Auth.Providers.Gitea.AuthURL)
|
||||
}
|
||||
|
||||
baseURL.Path = ""
|
||||
|
||||
forgeFactories = append(forgeFactories, &authProviderBasedForgeFactory{
|
||||
provider: "gitea",
|
||||
create: func(ctx context.Context, user *model.User) (port.Forge, error) {
|
||||
client, err := gitea.NewClient(baseURL.String(), gitea.SetToken(user.AccessToken))
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
forge := giteaAdapter.NewForge(client)
|
||||
|
||||
return forge, nil
|
||||
},
|
||||
})
|
||||
forgeFactories, err := getForgeFactories(conf)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "could not get forge factories")
|
||||
}
|
||||
|
||||
issueManager := service.NewIssueManager(client, forgeFactories...)
|
||||
|
Reference in New Issue
Block a user