feat: gitea client
This commit is contained in:
@@ -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
|
||||
|
||||
7
internal/gitadapters/adapter.go
Normal file
7
internal/gitadapters/adapter.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package gitadapters
|
||||
|
||||
import "io"
|
||||
|
||||
type Adapter interface {
|
||||
GetDiff(owner, repo string, prID int) (io.Reader, error)
|
||||
}
|
||||
30
internal/gitadapters/gitea/adapter.go
Normal file
30
internal/gitadapters/gitea/adapter.go
Normal 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
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user