@@ -686,6 +686,60 @@ func (a *API) DeleteCodespace(ctx context.Context, codespaceName string) error {
686686 return nil
687687}
688688
689+ type EditCodespaceParams struct {
690+ DisplayName string
691+ IdleTimeoutMinutes int
692+ Machine string
693+ }
694+
695+ type editRequest struct {
696+ DisplayName string `json:"display_name,omitempty"`
697+ IdleTimeoutMinutes int `json:"idle_timeout_minutes,omitempty"`
698+ Machine string `json:"machine"`
699+ }
700+
701+ func (a * API ) EditCodespace (ctx context.Context , codespaceName string , params * EditCodespaceParams ) (* Codespace , error ) {
702+ requestBody , err := json .Marshal (editRequest {
703+ DisplayName : params .DisplayName ,
704+ IdleTimeoutMinutes : params .IdleTimeoutMinutes ,
705+ Machine : params .Machine ,
706+ })
707+ fmt .Printf ("requestBody: %s\n " , requestBody )
708+ if err != nil {
709+ return nil , fmt .Errorf ("error marshaling request: %w" , err )
710+ }
711+
712+ req , err := http .NewRequest (http .MethodPatch , a .githubAPI + "/user/codespaces/" + codespaceName , bytes .NewBuffer (requestBody ))
713+ if err != nil {
714+ return nil , fmt .Errorf ("error creating request: %w" , err )
715+ }
716+
717+ a .setHeaders (req )
718+ resp , err := a .do (ctx , req , "/user/codespaces" )
719+ if err != nil {
720+ return nil , fmt .Errorf ("error making request: %w" , err )
721+ }
722+ defer resp .Body .Close ()
723+
724+ if resp .StatusCode == http .StatusAccepted {
725+ return nil , errProvisioningInProgress // RPC finished before result of creation known
726+ } else if resp .StatusCode != http .StatusOK && resp .StatusCode != http .StatusCreated {
727+ return nil , api .HandleHTTPError (resp )
728+ }
729+
730+ b , err := ioutil .ReadAll (resp .Body )
731+ if err != nil {
732+ return nil , fmt .Errorf ("error reading response body: %w" , err )
733+ }
734+
735+ var response Codespace
736+ if err := json .Unmarshal (b , & response ); err != nil {
737+ return nil , fmt .Errorf ("error unmarshaling response: %w" , err )
738+ }
739+
740+ return & response , nil
741+ }
742+
689743type getCodespaceRepositoryContentsResponse struct {
690744 Content string `json:"content"`
691745}
0 commit comments