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 }