@@ -51,14 +51,15 @@ export interface ClientConfig {
5151const toBase64 = ( str : string ) : string => Buffer . from ( str ) . toString ( 'base64' ) ;
5252
5353export class RestService {
54+ private static instance : RestService ;
5455 private client : AxiosInstance ;
5556 private baseURLs : string [ ] ;
5657 private oauthClient ?: OAuthClient ;
5758 private oauthBearer : boolean = false ;
5859
5960 constructor ( baseURLs : string [ ] , isForward ?: boolean , axiosDefaults ?: CreateAxiosDefaults ,
60- basicAuthCredentials ?: BasicAuthCredentials , bearerAuthCredentials ?: BearerAuthCredentials ,
61- maxRetries ?: number , retriesWaitMs ?: number , retriesMaxWaitMs ?: number ) {
61+ basicAuthCredentials ?: BasicAuthCredentials , bearerAuthCredentials ?: BearerAuthCredentials ,
62+ maxRetries ?: number , retriesWaitMs ?: number , retriesMaxWaitMs ?: number ) {
6263 this . client = axios . create ( axiosDefaults ) ;
6364 axiosRetry ( this . client , {
6465 retries : maxRetries ?? 2 ,
@@ -80,6 +81,16 @@ export class RestService {
8081 this . handleBearerAuth ( maxRetries ?? 2 , retriesWaitMs ?? 1000 , retriesMaxWaitMs ?? 20000 , bearerAuthCredentials ) ;
8182 }
8283
84+ static getInstance ( baseURLs : string [ ] , isForward ?: boolean , axiosDefaults ?: CreateAxiosDefaults ,
85+ basicAuthCredentials ?: BasicAuthCredentials , bearerAuthCredentials ?: BearerAuthCredentials ,
86+ maxRetries ?: number , retriesWaitMs ?: number , retriesMaxWaitMs ?: number ) : RestService {
87+ if ( ! this . instance ) {
88+ this . instance = new RestService ( baseURLs , isForward , axiosDefaults , basicAuthCredentials , bearerAuthCredentials ,
89+ maxRetries , retriesWaitMs , retriesMaxWaitMs ) ;
90+ }
91+ return this . instance ;
92+ }
93+
8394 handleBasicAuth ( basicAuthCredentials ?: BasicAuthCredentials ) : void {
8495 if ( basicAuthCredentials ) {
8596 switch ( basicAuthCredentials . credentialsSource ) {
@@ -111,7 +122,7 @@ export class RestService {
111122 }
112123 }
113124
114- handleBearerAuth ( maxRetries : number ,
125+ handleBearerAuth ( maxRetries : number ,
115126 retriesWaitMs : number , retriesMaxWaitMs : number , bearerAuthCredentials ?: BearerAuthCredentials ) : void {
116127 if ( bearerAuthCredentials ) {
117128 delete this . client . defaults . auth ;
@@ -150,7 +161,7 @@ export class RestService {
150161 }
151162 const issuerEndPointUrl = new URL ( bearerAuthCredentials . issuerEndpointUrl ! ) ;
152163 this . oauthClient = new OAuthClient ( bearerAuthCredentials . clientId ! , bearerAuthCredentials . clientSecret ! ,
153- issuerEndPointUrl . origin , issuerEndPointUrl . pathname , bearerAuthCredentials . scope ! ,
164+ issuerEndPointUrl . origin , issuerEndPointUrl . pathname , bearerAuthCredentials . scope ! ,
154165 maxRetries , retriesWaitMs , retriesMaxWaitMs ) ;
155166 break ;
156167 default :
0 commit comments