1616
1717import * as request from 'request' ;
1818
19+ import { BodyResponseCallback , RequestError } from './../transporters' ;
1920import Auth2Client from './oauth2client' ;
2021
22+ export interface Token {
23+ expires_in : number ;
24+ expiry_date : number ;
25+ }
26+
27+ export declare type RefreshTokenCallback =
28+ ( err : Error , token : Token , response : request . RequestResponse ) => void ;
29+
2130export default class Compute extends Auth2Client {
2231 /**
2332 * Google Compute Engine metadata server token endpoint.
@@ -53,20 +62,22 @@ export default class Compute extends Auth2Client {
5362 /**
5463 * Refreshes the access token.
5564 * @param {object= } ignored_
56- * @param {function= } opt_callback Optional callback.
65+ * @param {function= } callback Optional callback.
5766 */
58- protected refreshToken ( ignored , callback ?) : request . Request {
67+ protected refreshToken ( ignored : any , callback ?: RefreshTokenCallback ) :
68+ request . Request {
5969 const uri = this . _opts . tokenUrl || Compute . _GOOGLE_OAUTH2_TOKEN_URL ;
6070 // request for new token
6171 return this . transporter . request (
62- { method : 'GET' , uri : uri , json : true } , ( err , tokens , response ) => {
63- if ( ! err && tokens && tokens . expires_in ) {
64- tokens . expiry_date =
65- ( ( new Date ( ) ) . getTime ( ) + ( tokens . expires_in * 1000 ) ) ;
66- delete tokens . expires_in ;
72+ { method : 'GET' , uri : uri , json : true } , ( err , body , response ) => {
73+ const token = body as Token ;
74+ if ( ! err && token && token . expires_in ) {
75+ token . expiry_date =
76+ ( ( new Date ( ) ) . getTime ( ) + ( token . expires_in * 1000 ) ) ;
77+ delete token . expires_in ;
6778 }
6879 if ( callback ) {
69- callback ( err , tokens , response ) ;
80+ callback ( err , token , response ) ;
7081 }
7182 } ) ;
7283 }
@@ -79,7 +90,9 @@ export default class Compute extends Auth2Client {
7990 * @param {object } response The HTTP response.
8091 * @param {Function } callback The callback.
8192 */
82- protected postRequest ( err , result , response , callback ) {
93+ protected postRequest (
94+ err : Error , result : any , response : request . RequestResponse ,
95+ callback : BodyResponseCallback ) {
8396 if ( response && response . statusCode ) {
8497 let helpfulMessage = null ;
8598 if ( response . statusCode === 403 ) {
@@ -102,7 +115,7 @@ export default class Compute extends Auth2Client {
102115 err . message = helpfulMessage ;
103116 } else {
104117 err = new Error ( helpfulMessage ) ;
105- err . code = response . statusCode ;
118+ ( err as RequestError ) . code = response . statusCode ;
106119 }
107120 }
108121 }
0 commit comments