@@ -29,9 +29,9 @@ const FormData = require('form-data');
29
29
* https://cloud.google.com/iap/docs/authentication-howto
30
30
*
31
31
* @param {!Object } event The Cloud Functions event.
32
- * @param { !Function } callback The callback function.
32
+ * @returns { Promise }
33
33
*/
34
- exports . triggerDag = function triggerDag ( event , callback ) {
34
+ exports . triggerDag = function triggerDag ( event ) {
35
35
// Fill in your Composer environment information here.
36
36
37
37
// The project that holds your function
@@ -50,12 +50,10 @@ exports.triggerDag = function triggerDag (event, callback) {
50
50
const BODY = { 'conf' : JSON . stringify ( event . data ) } ;
51
51
52
52
// Make the request
53
- authorizeIap ( CLIENT_ID , PROJECT_ID , USER_AGENT )
53
+ return authorizeIap ( CLIENT_ID , PROJECT_ID , USER_AGENT )
54
54
. then ( function iapAuthorizationCallback ( iap ) {
55
- makeIapPostRequest ( WEBSERVER_URL , BODY , iap . idToken , USER_AGENT , iap . jwt ) ;
56
- } )
57
- . then ( _ => callback ( null ) )
58
- . catch ( callback ) ;
55
+ return makeIapPostRequest ( WEBSERVER_URL , BODY , iap . idToken , USER_AGENT , iap . jwt ) ;
56
+ } ) ;
59
57
} ;
60
58
61
59
/**
@@ -142,24 +140,17 @@ function authorizeIap (clientId, projectId, userAgent) {
142
140
* @param {string } jwt A Json web token used to authenticate the request.
143
141
*/
144
142
function makeIapPostRequest ( url , body , idToken , userAgent , jwt ) {
145
- var form = new FormData ( ) ;
146
- form . append ( 'grant_type' , 'urn:ietf:params:oauth:grant-type:jwt-bearer' ) ;
147
- form . append ( 'assertion' , jwt ) ;
148
-
149
- return fetch (
150
- url , {
151
- method : 'POST' ,
152
- body : form
153
- } )
154
- . then ( function makeIapPostRequestCallback ( ) {
155
- return fetch ( url , {
156
- method : 'POST' ,
157
- headers : {
158
- 'User-Agent' : userAgent ,
159
- 'Authorization' : `Bearer ${ idToken } `
160
- } ,
161
- body : JSON . stringify ( body )
162
- } ) ;
163
- } ) ;
143
+ return fetch ( url , {
144
+ method : 'POST' ,
145
+ headers : {
146
+ 'User-Agent' : userAgent ,
147
+ 'Authorization' : `Bearer ${ idToken } `
148
+ } ,
149
+ body : JSON . stringify ( body )
150
+ } ) . then ( function checkIapRequestStatus ( res ) {
151
+ if ( ! res . ok ) {
152
+ return res . text ( ) . then ( body => Promise . reject ( body ) ) ;
153
+ }
154
+ } ) ;
164
155
}
165
156
// [END composer_trigger]
0 commit comments