@@ -47,25 +47,6 @@ export class TokenAuthService implements IAuthService {
47
47
}
48
48
}
49
49
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
-
69
50
export class IamAuthService implements IAuthService {
70
51
private jwtExpirationTimeout = 3600 * 1000 ;
71
52
private tokenExpirationTimeout = 120 * 1000 ;
@@ -74,7 +55,23 @@ export class IamAuthService implements IAuthService {
74
55
private tokenTimestamp : DateTime | null ;
75
56
private tokenUpdateInProgress : Boolean = false ;
76
57
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
+ }
78
75
79
76
constructor ( iamCredentials : IIamCredentials , sslCredentials ?: ISslCredentials ) {
80
77
this . iamCredentials = iamCredentials ;
@@ -105,28 +102,28 @@ export class IamAuthService implements IAuthService {
105
102
}
106
103
107
104
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 ( ) } ) ;
110
107
const result = await withTimeout < ICreateIamTokenResponse > ( tokenPromise , this . tokenRequestTimeout ) ;
111
- tempIamAuthService . destroy ( )
108
+ runtimeIamAuthService . destroy ( )
112
109
return result
113
110
}
114
111
115
112
private async updateToken ( ) {
116
- this . tokenUpdateInProgress = true
113
+ this . tokenUpdateInProgress = true
117
114
const { iamToken} = await this . sendTokenRequest ( ) ;
118
115
if ( iamToken ) {
119
116
this . token = iamToken ;
120
117
this . tokenTimestamp = DateTime . utc ( ) ;
121
- this . tokenUpdateInProgress = false
118
+ this . tokenUpdateInProgress = false
122
119
} else {
123
- this . tokenUpdateInProgress = false
120
+ this . tokenUpdateInProgress = false
124
121
throw new Error ( 'Received empty token from IAM!' ) ;
125
122
}
126
123
}
127
124
128
125
private async waitUntilTokenUpdated ( ) {
129
- while ( this . tokenUpdateInProgress ) await sleep ( 1 )
126
+ while ( this . tokenUpdateInProgress ) { await sleep ( 1 ) }
130
127
return
131
128
}
132
129
0 commit comments