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)
| 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. |
| 369 | func (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 |