Skip to content

Commit 68e54a5

Browse files
authored
Merge pull request cli#4407 from cli/jg/list-codespaces-public
codespace list: update ListCodespaces to use new API endpoint
2 parents cb6db95 + 05297b8 commit 68e54a5

File tree

8 files changed

+20
-39
lines changed

8 files changed

+20
-39
lines changed

internal/codespaces/api/api.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,16 +179,16 @@ type CodespaceEnvironmentConnection struct {
179179
HostPublicKeys []string `json:"hostPublicKeys"`
180180
}
181181

182-
func (a *API) ListCodespaces(ctx context.Context, user string) ([]*Codespace, error) {
182+
func (a *API) ListCodespaces(ctx context.Context) ([]*Codespace, error) {
183183
req, err := http.NewRequest(
184-
http.MethodGet, a.githubAPI+"/vscs_internal/user/"+user+"/codespaces", nil,
184+
http.MethodGet, a.githubAPI+"/user/codespaces", nil,
185185
)
186186
if err != nil {
187187
return nil, fmt.Errorf("error creating request: %w", err)
188188
}
189189

190190
a.setHeaders(req)
191-
resp, err := a.do(ctx, req, "/vscs_internal/user/*/codespaces")
191+
resp, err := a.do(ctx, req, "/user/codespaces")
192192
if err != nil {
193193
return nil, fmt.Errorf("error making request: %w", err)
194194
}

internal/codespaces/api/api_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func TestListCodespaces(t *testing.T) {
3434
token: "faketoken",
3535
}
3636
ctx := context.TODO()
37-
codespaces, err := api.ListCodespaces(ctx, "testuser")
37+
codespaces, err := api.ListCodespaces(ctx)
3838
if err != nil {
3939
t.Fatal(err)
4040
}

pkg/cmd/codespace/code.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,8 @@ func newCodeCmd(app *App) *cobra.Command {
3232

3333
// VSCode opens a codespace in the local VS VSCode application.
3434
func (a *App) VSCode(ctx context.Context, codespaceName string, useInsiders bool) error {
35-
user, err := a.apiClient.GetUser(ctx)
36-
if err != nil {
37-
return fmt.Errorf("error getting user: %w", err)
38-
}
39-
4035
if codespaceName == "" {
41-
codespace, err := chooseCodespace(ctx, a.apiClient, user)
36+
codespace, err := chooseCodespace(ctx, a.apiClient)
4237
if err != nil {
4338
if err == errNoCodespaces {
4439
return err

pkg/cmd/codespace/common.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ type apiClient interface {
3535
GetUser(ctx context.Context) (*api.User, error)
3636
GetCodespaceToken(ctx context.Context, user, name string) (string, error)
3737
GetCodespace(ctx context.Context, token, user, name string) (*api.Codespace, error)
38-
ListCodespaces(ctx context.Context, user string) ([]*api.Codespace, error)
38+
ListCodespaces(ctx context.Context) ([]*api.Codespace, error)
3939
DeleteCodespace(ctx context.Context, user, name string) error
4040
StartCodespace(ctx context.Context, token string, codespace *api.Codespace) error
4141
CreateCodespace(ctx context.Context, params *api.CreateCodespaceParams) (*api.Codespace, error)
@@ -48,8 +48,8 @@ type apiClient interface {
4848

4949
var errNoCodespaces = errors.New("you have no codespaces")
5050

51-
func chooseCodespace(ctx context.Context, apiClient apiClient, user *api.User) (*api.Codespace, error) {
52-
codespaces, err := apiClient.ListCodespaces(ctx, user.Login)
51+
func chooseCodespace(ctx context.Context, apiClient apiClient) (*api.Codespace, error) {
52+
codespaces, err := apiClient.ListCodespaces(ctx)
5353
if err != nil {
5454
return nil, fmt.Errorf("error getting codespaces: %w", err)
5555
}
@@ -99,7 +99,7 @@ func chooseCodespaceFromList(ctx context.Context, codespaces []*api.Codespace) (
9999
// It then fetches the codespace token and the codespace record.
100100
func getOrChooseCodespace(ctx context.Context, apiClient apiClient, user *api.User, codespaceName string) (codespace *api.Codespace, token string, err error) {
101101
if codespaceName == "" {
102-
codespace, err = chooseCodespace(ctx, apiClient, user)
102+
codespace, err = chooseCodespace(ctx, apiClient)
103103
if err != nil {
104104
if err == errNoCodespaces {
105105
return nil, "", err

pkg/cmd/codespace/delete.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func (a *App) Delete(ctx context.Context, opts deleteOptions) error {
6767
var codespaces []*api.Codespace
6868
nameFilter := opts.codespaceName
6969
if nameFilter == "" {
70-
codespaces, err = a.apiClient.ListCodespaces(ctx, user.Login)
70+
codespaces, err = a.apiClient.ListCodespaces(ctx)
7171
if err != nil {
7272
return fmt.Errorf("error getting codespaces: %w", err)
7373
}

pkg/cmd/codespace/delete_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,7 @@ func TestDelete(t *testing.T) {
167167
},
168168
}
169169
if tt.opts.codespaceName == "" {
170-
apiMock.ListCodespacesFunc = func(_ context.Context, userLogin string) ([]*api.Codespace, error) {
171-
if userLogin != user.Login {
172-
return nil, fmt.Errorf("unexpected user %q", userLogin)
173-
}
170+
apiMock.ListCodespacesFunc = func(_ context.Context) ([]*api.Codespace, error) {
174171
return tt.codespaces, nil
175172
}
176173
} else {

pkg/cmd/codespace/list.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,7 @@ func newListCmd(app *App) *cobra.Command {
2828
}
2929

3030
func (a *App) List(ctx context.Context, asJSON bool) error {
31-
user, err := a.apiClient.GetUser(ctx)
32-
if err != nil {
33-
return fmt.Errorf("error getting user: %w", err)
34-
}
35-
36-
codespaces, err := a.apiClient.ListCodespaces(ctx, user.Login)
31+
codespaces, err := a.apiClient.ListCodespaces(ctx)
3732
if err != nil {
3833
return fmt.Errorf("error getting codespaces: %w", err)
3934
}

pkg/cmd/codespace/mock_api.go

Lines changed: 8 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)