@@ -383,8 +383,13 @@ async function serverFeatures(element: ServerTreeItem, params?: any): Promise<Fe
383
383
return undefined ;
384
384
}
385
385
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 ) {
388
393
children . push ( new OfflineTreeItem ( { parent : element , label : name , id : name } , serverSpec . username || 'UnknownUser' ) ) ;
389
394
} else {
390
395
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<
458
463
}
459
464
460
465
const response = await makeRESTRequest ( "GET" , serverSpec ) ;
461
- if ( ! response || response . status !== 200 ) {
466
+ if ( response ? .status !== 200 ) {
462
467
children . push ( new OfflineTreeItem ( { parent : element , label : name , id : name } , serverSpec . username || 'UnknownUser' ) ) ;
463
468
} else {
464
469
const serverApiVersion = response . data . result . content . api ;
465
- response . data . result . content . namespaces . map ( ( namespace ) => {
470
+ response . data . result . content . namespaces . map ( ( namespace : string ) => {
466
471
children . push ( new NamespaceTreeItem ( { parent : element , label : name , id : name } , namespace , name , serverApiVersion ) ) ;
467
472
} ) ;
468
473
}
@@ -555,7 +560,7 @@ async function namespaceProjects(element: ProjectsTreeItem, params?: any): Promi
555
560
{ apiVersion : 1 , namespace : params . ns , path : "/action/query" } ,
556
561
{ query : "SELECT Name, Description FROM %Studio.Project" , parameters : [ ] }
557
562
) ;
558
- if ( response !== undefined ) {
563
+ if ( response ?. status === 200 ) {
559
564
if ( response . data . result . content === undefined ) {
560
565
let message ;
561
566
if ( response . data . status ?. errors [ 0 ] ?. code === 5540 ) {
@@ -641,7 +646,7 @@ async function namespaceWebApps(element: ProjectsTreeItem, params?: any): Promis
641
646
serverSpec ,
642
647
{ apiVersion : 1 , namespace : "%SYS" , path : `/cspapps/${ params . ns } ` }
643
648
) ;
644
- if ( response !== undefined ) {
649
+ if ( response ?. status === 200 ) {
645
650
if ( response . data . result . content === undefined ) {
646
651
vscode . window . showErrorMessage ( response . data . status . summary ) ;
647
652
return undefined ;
0 commit comments