gitea-sonarqube-bot/internal/clients/gitea/gitea.go
justusbunsi 51211d77cd
Change internal name
Signed-off-by: Steven Kriegler <sk.bunsenbrenner@gmail.com>
2022-07-11 17:39:22 +02:00

64 lines
1.6 KiB
Go

package gitea
import (
"fmt"
"gitea-sonarqube-bot/internal/settings"
"log"
"code.gitea.io/sdk/gitea"
)
type GiteaSdkInterface interface {
PostComment(settings.GiteaRepository, int, string) error
UpdateStatus(settings.GiteaRepository, string, StatusDetails) error
DetermineHEAD(settings.GiteaRepository, int64) (string, error)
}
type GiteaSdk struct {
client *gitea.Client
}
func (sdk *GiteaSdk) PostComment(repo settings.GiteaRepository, idx int, msg string) error {
opt := gitea.CreateIssueCommentOption{
Body: msg,
}
_, _, err := sdk.client.CreateIssueComment(repo.Owner, repo.Name, int64(idx), opt)
return err
}
func (sdk *GiteaSdk) UpdateStatus(repo settings.GiteaRepository, ref string, details StatusDetails) error {
opt := gitea.CreateStatusOption{
TargetURL: details.Url,
Context: "gitea-sonarqube-bot",
Description: details.Message,
State: gitea.StatusState(details.State),
}
_, r, err := sdk.client.CreateStatus(repo.Owner, repo.Name, ref, opt)
if err != nil {
log.Printf("Error updating status: response code: %d | error: '%s'", r.StatusCode, err.Error())
}
return err
}
func (sdk *GiteaSdk) DetermineHEAD(repo settings.GiteaRepository, idx int64) (string, error) {
pr, _, err := sdk.client.GetPullRequest(repo.Owner, repo.Name, idx)
if err != nil {
return "", err
}
return pr.Head.Sha, nil
}
func New() *GiteaSdk {
client, err := gitea.NewClient(settings.Gitea.Url, gitea.SetToken(settings.Gitea.Token.Value))
if err != nil {
panic(fmt.Errorf("cannot initialize Gitea client: %w", err))
}
return &GiteaSdk{client}
}