MCPcopy Create free account
hub / github.com/cli/cli / ListCodespaces

Method ListCodespaces

internal/codespaces/api/api.go:369–472  ·  view source on GitHub ↗

ListCodespaces returns a list of codespaces for the user. Pass a negative limit to request all pages from the API until all codespaces have been fetched.

(ctx context.Context, opts ListCodespacesOptions)

Source from the content-addressed store, hash-verified

367// ListCodespaces returns a list of codespaces for the user. Pass a negative limit to request all pages from
368// the API until all codespaces have been fetched.
369func (a *API) ListCodespaces(ctx context.Context, opts ListCodespacesOptions) (codespaces []*Codespace, err error) {
370 var (
371 perPage = 100
372 limit = opts.Limit
373 )
374
375 if limit > 0 && limit < 100 {
376 perPage = limit
377 }
378
379 var (
380 listURL safeurl.SafeURL
381 spanName string
382 )
383
384 if opts.RepoName != "" {
385 owner, name, err := safeurl.RepoPartsFromNWO(opts.RepoName)
386 if err != nil {
387 return nil, err
388 }
389 u, err := safeurl.JoinPathWithHostPrefix(a.githubAPI, "repos", owner, name, "codespaces")
390 if err != nil {
391 return nil, err
392 }
393 u.SetQuery("per_page", strconv.Itoa(perPage))
394 listURL = u
395 spanName = "/repos/*/codespaces"
396 } else if opts.OrgName != "" {
397 // the endpoints below can only be called by the organization admins
398 orgName := opts.OrgName
399 if opts.UserName != "" {
400 userName := opts.UserName
401 u, err := safeurl.JoinPathWithHostPrefix(a.githubAPI, "orgs", orgName, "members", userName, "codespaces")
402 if err != nil {
403 return nil, err
404 }
405 u.SetQuery("per_page", strconv.Itoa(perPage))
406 listURL = u
407 spanName = "/orgs/*/members/*/codespaces"
408 } else {
409 u, err := safeurl.JoinPathWithHostPrefix(a.githubAPI, "orgs", orgName, "codespaces")
410 if err != nil {
411 return nil, err
412 }
413 u.SetQuery("per_page", strconv.Itoa(perPage))
414 listURL = u
415 spanName = "/orgs/*/codespaces"
416 }
417 } else {
418 u, err := safeurl.JoinPathWithHostPrefix(a.githubAPI, "user", "codespaces")
419 if err != nil {
420 return nil, err
421 }
422 u.SetQuery("per_page", strconv.Itoa(perPage))
423 listURL = u
424 spanName = "/user/codespaces"
425 }
426

Callers 2

Calls 14

setHeadersMethod · 0.95
doMethod · 0.95
RepoPartsFromNWOFunction · 0.92
JoinPathWithHostPrefixFunction · 0.92
HandleHTTPErrorFunction · 0.92
NewImmutableSafeURLFunction · 0.92
SetQueryMethod · 0.80
findNextPageFunction · 0.70
StringMethod · 0.65
ErrorfMethod · 0.65
CloseMethod · 0.65
GetMethod · 0.65

Tested by 2