feat: gitea client
This commit is contained in:
164
vendor/code.gitea.io/sdk/gitea/repo_wiki.go
generated
vendored
Normal file
164
vendor/code.gitea.io/sdk/gitea/repo_wiki.go
generated
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package gitea
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// WikiPage represents a wiki page
|
||||
type WikiPage struct {
|
||||
Title string `json:"title"`
|
||||
ContentBase64 string `json:"content_base64"`
|
||||
CommitCount int64 `json:"commit_count"`
|
||||
Sidebar string `json:"sidebar"`
|
||||
Footer string `json:"footer"`
|
||||
HTMLURL string `json:"html_url"`
|
||||
SubURL string `json:"sub_url"`
|
||||
LastCommit *WikiCommit `json:"last_commit,omitempty"`
|
||||
}
|
||||
|
||||
// WikiPageMetaData represents metadata for a wiki page (without content)
|
||||
type WikiPageMetaData struct {
|
||||
Title string `json:"title"`
|
||||
HTMLURL string `json:"html_url"`
|
||||
SubURL string `json:"sub_url"`
|
||||
LastCommit *WikiCommit `json:"last_commit,omitempty"`
|
||||
}
|
||||
|
||||
// WikiCommit represents a wiki commit/revision
|
||||
type WikiCommit struct {
|
||||
ID string `json:"sha"`
|
||||
Message string `json:"message"`
|
||||
Author *CommitUser `json:"author,omitempty"`
|
||||
Commiter *CommitUser `json:"commiter,omitempty"`
|
||||
}
|
||||
|
||||
// WikiCommitList represents a list of wiki commits
|
||||
type WikiCommitList struct {
|
||||
WikiCommits []*WikiCommit `json:"commits"`
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
// CreateWikiPageOptions options for creating or editing a wiki page
|
||||
type CreateWikiPageOptions struct {
|
||||
Title string `json:"title,omitempty"`
|
||||
ContentBase64 string `json:"content_base64,omitempty"`
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
// ListWikiPagesOptions options for listing wiki pages
|
||||
type ListWikiPagesOptions struct {
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListWikiPageRevisionsOptions options for listing wiki page revisions
|
||||
type ListWikiPageRevisionsOptions struct {
|
||||
Page int `json:"page,omitempty"`
|
||||
}
|
||||
|
||||
// CreateWikiPage creates a new wiki page
|
||||
func (c *Client) CreateWikiPage(owner, repo string, opt CreateWikiPageOptions) (*WikiPage, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&owner, &repo); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
body, err := json.Marshal(&opt)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
page := new(WikiPage)
|
||||
resp, err := c.getParsedResponse("POST",
|
||||
fmt.Sprintf("/repos/%s/%s/wiki/new", owner, repo),
|
||||
jsonHeader, bytes.NewReader(body), &page)
|
||||
return page, resp, err
|
||||
}
|
||||
|
||||
// GetWikiPage gets a wiki page by name
|
||||
func (c *Client) GetWikiPage(owner, repo, pageName string) (*WikiPage, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&owner, &repo, &pageName); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
page := new(WikiPage)
|
||||
resp, err := c.getParsedResponse("GET",
|
||||
fmt.Sprintf("/repos/%s/%s/wiki/page/%s", owner, repo, pageName),
|
||||
jsonHeader, nil, &page)
|
||||
return page, resp, err
|
||||
}
|
||||
|
||||
// EditWikiPage edits an existing wiki page
|
||||
func (c *Client) EditWikiPage(owner, repo, pageName string, opt CreateWikiPageOptions) (*WikiPage, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&owner, &repo, &pageName); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
body, err := json.Marshal(&opt)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
page := new(WikiPage)
|
||||
resp, err := c.getParsedResponse("PATCH",
|
||||
fmt.Sprintf("/repos/%s/%s/wiki/page/%s", owner, repo, pageName),
|
||||
jsonHeader, bytes.NewReader(body), &page)
|
||||
return page, resp, err
|
||||
}
|
||||
|
||||
// DeleteWikiPage deletes a wiki page
|
||||
func (c *Client) DeleteWikiPage(owner, repo, pageName string) (*Response, error) {
|
||||
if err := escapeValidatePathSegments(&owner, &repo, &pageName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
status, resp, err := c.getStatusCode("DELETE",
|
||||
fmt.Sprintf("/repos/%s/%s/wiki/page/%s", owner, repo, pageName),
|
||||
jsonHeader, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
if status != http.StatusNoContent {
|
||||
return resp, fmt.Errorf("unexpected status: %d", status)
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// ListWikiPages lists all wiki pages in a repository
|
||||
func (c *Client) ListWikiPages(owner, repo string, opt ListWikiPagesOptions) ([]*WikiPageMetaData, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&owner, &repo); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
opt.setDefaults()
|
||||
|
||||
link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/wiki/pages", owner, repo))
|
||||
link.RawQuery = opt.getURLQuery().Encode()
|
||||
|
||||
pages := make([]*WikiPageMetaData, 0, opt.PageSize)
|
||||
resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &pages)
|
||||
return pages, resp, err
|
||||
}
|
||||
|
||||
// GetWikiPageRevisions gets all revisions of a wiki page
|
||||
func (c *Client) GetWikiPageRevisions(owner, repo, pageName string, opt ListWikiPageRevisionsOptions) (*WikiCommitList, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&owner, &repo, &pageName); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
link, _ := url.Parse(fmt.Sprintf("/repos/%s/%s/wiki/revisions/%s", owner, repo, pageName))
|
||||
if opt.Page > 0 {
|
||||
query := link.Query()
|
||||
query.Add("page", fmt.Sprintf("%d", opt.Page))
|
||||
link.RawQuery = query.Encode()
|
||||
}
|
||||
|
||||
commitList := new(WikiCommitList)
|
||||
resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &commitList)
|
||||
return commitList, resp, err
|
||||
}
|
||||
Reference in New Issue
Block a user