Add wiki page revision retrieval
Some checks are pending
Test / test (push) Waiting to run
Security Scan / security (push) Successful in 10s

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-01 23:52:33 +00:00
parent 15265e4599
commit 3cb64ca7f9
2 changed files with 52 additions and 0 deletions

15
wiki.go
View file

@ -3,6 +3,7 @@ package forge
import (
"context"
"iter"
"strconv"
"dappco.re/go/core/forge/types"
)
@ -58,6 +59,20 @@ func (s *WikiService) GetPage(ctx context.Context, owner, repo, pageName string)
return &out, nil
}
// GetPageRevisions returns the revision history for a wiki page.
// Page is optional; pass a value greater than zero to request a specific page of results.
func (s *WikiService) GetPageRevisions(ctx context.Context, owner, repo, pageName string, page int) (*types.WikiCommitList, error) {
path := ResolvePath("/api/v1/repos/{owner}/{repo}/wiki/revisions/{pageName}", pathParams("owner", owner, "repo", repo, "pageName", pageName))
if page > 0 {
path += "?page=" + strconv.Itoa(page)
}
var out types.WikiCommitList
if err := s.client.Get(ctx, path, &out); err != nil {
return nil, err
}
return &out, nil
}
// CreatePage creates a new wiki page.
func (s *WikiService) CreatePage(ctx context.Context, owner, repo string, opts *types.CreateWikiPageOptions) (*types.WikiPage, error) {
path := ResolvePath("/api/v1/repos/{owner}/{repo}/wiki/new", pathParams("owner", owner, "repo", repo))

View file

@ -105,6 +105,43 @@ func TestWikiService_GetPage_Good(t *testing.T) {
}
}
func TestWikiService_GetPageRevisions_Good(t *testing.T) {
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodGet {
t.Errorf("expected GET, got %s", r.Method)
}
if r.URL.Path != "/api/v1/repos/core/go-forge/wiki/revisions/Home" {
t.Errorf("wrong path: %s", r.URL.Path)
}
if got := r.URL.Query().Get("page"); got != "2" {
t.Errorf("got page=%q, want %q", got, "2")
}
json.NewEncoder(w).Encode(types.WikiCommitList{
Count: 2,
WikiCommits: []*types.WikiCommit{
{ID: "abc123", Message: "Initial import"},
{ID: "def456", Message: "Updated home page"},
},
})
}))
defer srv.Close()
f := NewForge(srv.URL, "tok")
revisions, err := f.Wiki.GetPageRevisions(context.Background(), "core", "go-forge", "Home", 2)
if err != nil {
t.Fatal(err)
}
if revisions.Count != 2 {
t.Fatalf("got count=%d, want 2", revisions.Count)
}
if len(revisions.WikiCommits) != 2 {
t.Fatalf("got %d revisions, want 2", len(revisions.WikiCommits))
}
if revisions.WikiCommits[0].ID != "abc123" || revisions.WikiCommits[1].Message != "Updated home page" {
t.Fatalf("got %#v", revisions.WikiCommits)
}
}
func TestWikiService_CreatePage_Good(t *testing.T) {
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {