feat(tools): repo_list

This commit is contained in:
Mathias Bergqvist
2026-05-04 22:07:44 +02:00
parent 18eadc0ae9
commit 33ad02d369
5 changed files with 194 additions and 1 deletions

55
internal/gitea/repos.go Normal file
View File

@@ -0,0 +1,55 @@
package gitea
import (
"context"
"encoding/json"
"fmt"
)
type Repo struct {
Name string `json:"name"`
FullName string `json:"full_name"`
DefaultBranch string `json:"default_branch"`
Description string `json:"description"`
Private bool `json:"private"`
CloneURL string `json:"clone_url"`
HTMLURL string `json:"html_url"`
}
func (c *Client) ListRepos(ctx context.Context, owner string, page, limit int) ([]Repo, error) {
if page < 1 {
page = 1
}
if limit < 1 {
limit = 30
}
path := fmt.Sprintf("/api/v1/users/%s/repos?page=%d&limit=%d", owner, page, limit)
body, status, err := c.GetJSON(ctx, path)
if err != nil {
return nil, err
}
if err := MapStatus(status, body); err != nil {
return nil, err
}
var repos []Repo
if err := json.Unmarshal(body, &repos); err != nil {
return nil, err
}
return repos, nil
}
func (c *Client) GetRepo(ctx context.Context, owner, name string) (*Repo, error) {
path := fmt.Sprintf("/api/v1/repos/%s/%s", owner, name)
body, status, err := c.GetJSON(ctx, path)
if err != nil {
return nil, err
}
if err := MapStatus(status, body); err != nil {
return nil, err
}
var r Repo
if err := json.Unmarshal(body, &r); err != nil {
return nil, err
}
return &r, nil
}