@@ -383,8 +383,13 @@ async function serverFeatures(element: ServerTreeItem, params?: any): Promise<Fe
383383 return undefined ;
384384 }
385385
386- const response = await makeRESTRequest ( "HEAD" , serverSpec ) ;
387- if ( ! response || response . status !== 200 ) {
386+ let response = await makeRESTRequest ( "HEAD" , serverSpec ) ;
387+ if ( response ?. status === 401 ) {
388+ // Authentication error, so retry in case first attempt cleared a no-longer-valid stored password
389+ serverSpec . password = undefined ;
390+ response = await makeRESTRequest ( "HEAD" , serverSpec ) ;
391+ }
392+ if ( response ?. status !== 200 ) {
388393 children . push ( new OfflineTreeItem ( { parent : element , label : name , id : name } , serverSpec . username || 'UnknownUser' ) ) ;
389394 } else {
390395 children . push ( new NamespacesTreeItem ( { parent : element , label : name , id : name } , element . name , serverSpec . username || 'UnknownUser' ) ) ;
@@ -458,11 +463,11 @@ async function serverNamespaces(element: ServerTreeItem, params?: any): Promise<
458463 }
459464
460465 const response = await makeRESTRequest ( "GET" , serverSpec ) ;
461- if ( ! response || response . status !== 200 ) {
466+ if ( response ? .status !== 200 ) {
462467 children . push ( new OfflineTreeItem ( { parent : element , label : name , id : name } , serverSpec . username || 'UnknownUser' ) ) ;
463468 } else {
464469 const serverApiVersion = response . data . result . content . api ;
465- response . data . result . content . namespaces . map ( ( namespace ) => {
470+ response . data . result . content . namespaces . map ( ( namespace : string ) => {
466471 children . push ( new NamespaceTreeItem ( { parent : element , label : name , id : name } , namespace , name , serverApiVersion ) ) ;
467472 } ) ;
468473 }
@@ -555,7 +560,7 @@ async function namespaceProjects(element: ProjectsTreeItem, params?: any): Promi
555560 { apiVersion : 1 , namespace : params . ns , path : "/action/query" } ,
556561 { query : "SELECT Name, Description FROM %Studio.Project" , parameters : [ ] }
557562 ) ;
558- if ( response !== undefined ) {
563+ if ( response ?. status === 200 ) {
559564 if ( response . data . result . content === undefined ) {
560565 let message ;
561566 if ( response . data . status ?. errors [ 0 ] ?. code === 5540 ) {
@@ -641,7 +646,7 @@ async function namespaceWebApps(element: ProjectsTreeItem, params?: any): Promis
641646 serverSpec ,
642647 { apiVersion : 1 , namespace : "%SYS" , path : `/cspapps/${ params . ns } ` }
643648 ) ;
644- if ( response !== undefined ) {
649+ if ( response ?. status === 200 ) {
645650 if ( response . data . result . content === undefined ) {
646651 vscode . window . showErrorMessage ( response . data . status . summary ) ;
647652 return undefined ;
0 commit comments