50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package gitea
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"io"
|
|
|
|
"code.gitea.io/sdk/gitea"
|
|
"git.schreifuchs.ch/schreifuchs/pierre-bot/internal/pierre"
|
|
)
|
|
|
|
type Adapter struct {
|
|
client *gitea.Client
|
|
}
|
|
|
|
func New(baseURL, token string) (*Adapter, error) {
|
|
client, err := gitea.NewClient(baseURL, gitea.SetToken(token))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &Adapter{
|
|
client: client,
|
|
}, nil
|
|
}
|
|
|
|
func (g *Adapter) GetDiff(ctx context.Context, owner, repo string, prID int) (io.ReadCloser, error) {
|
|
g.client.SetContext(ctx)
|
|
diff, _, err := g.client.GetPullRequestDiff(owner, repo, int64(prID), gitea.PullRequestDiffOptions{})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return io.NopCloser(bytes.NewReader(diff)), nil
|
|
}
|
|
|
|
func (g *Adapter) AddComment(ctx context.Context, owner, repo string, prID int, comment pierre.Comment) error {
|
|
g.client.SetContext(ctx)
|
|
opts := gitea.CreatePullReviewOptions{
|
|
State: gitea.ReviewStateComment,
|
|
Comments: []gitea.CreatePullReviewComment{
|
|
{
|
|
Path: comment.File,
|
|
Body: comment.Message,
|
|
NewLineNum: int64(comment.Line),
|
|
},
|
|
},
|
|
}
|
|
_, _, err := g.client.CreatePullReview(owner, repo, int64(prID), opts)
|
|
return err
|
|
}
|