@@ -47,25 +47,6 @@ export class TokenAuthService implements IAuthService {
4747 }
4848}
4949
50- class TempIamAuthService extends GrpcService < IamTokenService > {
51- constructor ( iamCredentials : IIamCredentials , sslCredentials : ISslCredentials ) {
52- super (
53- iamCredentials . iamEndpoint ,
54- 'yandex.cloud.iam.v1.IamTokenService' ,
55- IamTokenService ,
56- sslCredentials ,
57- ) ;
58- }
59-
60- create ( request : yandex . cloud . iam . v1 . ICreateIamTokenRequest ) {
61- return this . api . create ( request )
62- }
63-
64- destroy ( ) {
65- this . api . end ( )
66- }
67- }
68-
6950export class IamAuthService implements IAuthService {
7051 private jwtExpirationTimeout = 3600 * 1000 ;
7152 private tokenExpirationTimeout = 120 * 1000 ;
@@ -74,7 +55,23 @@ export class IamAuthService implements IAuthService {
7455 private tokenTimestamp : DateTime | null ;
7556 private tokenUpdateInProgress : Boolean = false ;
7657 private readonly iamCredentials : IIamCredentials ;
77- private readonly sslCredentials : ISslCredentials
58+ private readonly sslCredentials : ISslCredentials ;
59+ private readonly GrpcService = class extends GrpcService < IamTokenService > {
60+ constructor ( iamCredentials : IIamCredentials , sslCredentials : ISslCredentials ) {
61+ super (
62+ iamCredentials . iamEndpoint ,
63+ 'yandex.cloud.iam.v1.IamTokenService' ,
64+ IamTokenService ,
65+ sslCredentials ,
66+ ) ;
67+ }
68+
69+ create ( request : yandex . cloud . iam . v1 . ICreateIamTokenRequest ) {
70+ return this . api . create ( request )
71+ }
72+
73+ destroy ( ) { this . api . end ( ) }
74+ }
7875
7976 constructor ( iamCredentials : IIamCredentials , sslCredentials ?: ISslCredentials ) {
8077 this . iamCredentials = iamCredentials ;
@@ -105,28 +102,28 @@ export class IamAuthService implements IAuthService {
105102 }
106103
107104 private async sendTokenRequest ( ) : Promise < ICreateIamTokenResponse > {
108- let tempIamAuthService = new TempIamAuthService ( this . iamCredentials , this . sslCredentials )
109- const tokenPromise = tempIamAuthService . create ( { jwt : this . getJwtRequest ( ) } ) ;
105+ let runtimeIamAuthService = new this . GrpcService ( this . iamCredentials , this . sslCredentials )
106+ const tokenPromise = runtimeIamAuthService . create ( { jwt : this . getJwtRequest ( ) } ) ;
110107 const result = await withTimeout < ICreateIamTokenResponse > ( tokenPromise , this . tokenRequestTimeout ) ;
111- tempIamAuthService . destroy ( )
108+ runtimeIamAuthService . destroy ( )
112109 return result
113110 }
114111
115112 private async updateToken ( ) {
116- this . tokenUpdateInProgress = true
113+ this . tokenUpdateInProgress = true
117114 const { iamToken} = await this . sendTokenRequest ( ) ;
118115 if ( iamToken ) {
119116 this . token = iamToken ;
120117 this . tokenTimestamp = DateTime . utc ( ) ;
121- this . tokenUpdateInProgress = false
118+ this . tokenUpdateInProgress = false
122119 } else {
123- this . tokenUpdateInProgress = false
120+ this . tokenUpdateInProgress = false
124121 throw new Error ( 'Received empty token from IAM!' ) ;
125122 }
126123 }
127124
128125 private async waitUntilTokenUpdated ( ) {
129- while ( this . tokenUpdateInProgress ) await sleep ( 1 )
126+ while ( this . tokenUpdateInProgress ) { await sleep ( 1 ) }
130127 return
131128 }
132129
0 commit comments