feat: gitea client

This commit is contained in:
2026-02-12 20:58:55 +01:00
parent 8583ab48ce
commit 378d008a91
9 changed files with 225 additions and 32 deletions

View File

@@ -1,5 +1,9 @@
package chatter
import (
"context"
)
// Role defines who sent the message
type Role string
@@ -15,6 +19,10 @@ type Message struct {
Content string
}
type ChatAdapter interface {
GenerateStructured(ctx context.Context, messages []Message, target interface{}) error
}
// PredictionConfig allows for per-request overrides
type PredictionConfig struct {
Temperature float64

View File

@@ -0,0 +1,7 @@
package gitadapters
import "io"
type Adapter interface {
GetDiff(owner, repo string, prID int) (io.Reader, error)
}

View File

@@ -0,0 +1,30 @@
package gitea
import (
"bytes"
"io"
"code.gitea.io/sdk/gitea"
)
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(owner, repo string, prID int) (io.Reader, error) {
diff, _, err := g.client.GetPullRequestDiff(owner, repo, int64(prID), gitea.PullRequestDiffOptions{})
if err != nil {
return nil, err
}
return bytes.NewReader(diff), nil
}

View File

@@ -14,11 +14,7 @@ type Comment struct {
Message string `json:"message"`
}
type ChatAdapter interface {
GenerateStructured(ctx context.Context, messages []chatter.Message, target interface{}) error
}
func JudgePR(ctx context.Context, chat ChatAdapter, diff io.Reader) (comments []Comment, err error) {
func JudgePR(ctx context.Context, chat chatter.ChatAdapter, diff io.Reader) (comments []Comment, err error) {
diffBytes, err := io.ReadAll(diff)
if err != nil {
return nil, fmt.Errorf("failed to read diff: %w", err)