MCPcopy
hub / github.com/larksuite/cli / listWikiNodeChildren

Function listWikiNodeChildren

tests/cli_e2e/wiki/helpers_test.go:286–333  ·  view source on GitHub ↗
(ctx context.Context, spaceID, parentNodeToken string)

Source from the content-addressed store, hash-verified

284}
285
286func listWikiNodeChildren(ctx context.Context, spaceID, parentNodeToken string) ([]wikiNodeInfo, *clie2e.Result, error) {
287 var children []wikiNodeInfo
288 pageToken := ""
289 seenPageTokens := map[string]struct{}{}
290 for {
291 params := map[string]any{
292 "page_size": 50,
293 "parent_node_token": parentNodeToken,
294 }
295 if pageToken != "" {
296 if _, exists := seenPageTokens[pageToken]; exists {
297 return children, nil, fmt.Errorf("wiki children pagination loop detected for parent %s page_token %q", parentNodeToken, pageToken)
298 }
299 seenPageTokens[pageToken] = struct{}{}
300 params["page_token"] = pageToken
301 }
302
303 result, err := clie2e.RunCmdWithRetry(ctx, clie2e.Request{
304 Args: []string{"api", "get", "/open-apis/wiki/v2/spaces/" + spaceID + "/nodes"},
305 DefaultAs: "bot",
306 Params: params,
307 }, clie2e.RetryOptions{})
308 if err != nil || result == nil || result.ExitCode != 0 {
309 return children, result, err
310 }
311 if !wikiAPISuccess(result.Stdout) {
312 return children, result, fmt.Errorf("list wiki node children for parent %s failed: stdout=%s stderr=%s", parentNodeToken, result.Stdout, result.Stderr)
313 }
314
315 parsed := gjson.Parse(result.Stdout)
316 for _, item := range parsed.Get("data.items").Array() {
317 nodeToken := item.Get("node_token").String()
318 if nodeToken == "" {
319 continue
320 }
321 objType := item.Get("obj_type").String()
322 if objType == "" {
323 objType = "docx"
324 }
325 children = append(children, wikiNodeInfo{NodeToken: nodeToken, ObjType: objType})
326 }
327
328 pageToken = parsed.Get("data.page_token").String()
329 if pageToken == "" || !parsed.Get("data.has_more").Bool() {
330 return children, result, nil
331 }
332 }
333}
334
335func waitWikiNodeDeleted(ctx context.Context, nodeToken string) error {
336 deadline := time.NewTimer(20 * time.Second)

Callers 1

deleteWikiNodeAndVerifyFunction · 0.85

Calls 4

wikiAPISuccessFunction · 0.85
GetMethod · 0.65
BoolMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected