@@ -5,7 +5,8 @@ import fetch from "runtime/http.js";
55let version = '{{VERSION}}' ;
66let environment ,
77 api_key ;
8- export default function Request ( options , fetchOptions ) {
8+ export default function Request ( stack , fetchOptions ) {
9+ let requestParams = stack . requestParams ;
910 return new Promise ( function ( resolve , reject ) {
1011 let queryParams ;
1112 let serialize = function ( obj , prefix ) {
@@ -28,21 +29,19 @@ export default function Request(options, fetchOptions) {
2829 return str . join ( "&" ) ;
2930 } ;
3031
31- let url = options . url ,
32- headers = options . headers ;
32+
3333
3434 // setting headers
35- headers [ 'Content-Type' ] = 'application/json; charset=UTF-8' ;
36- headers [ 'X-User-Agent' ] = 'contentstack-{{PLATFORM}}/' + version ;
35+ requestParams . headers [ 'Content-Type' ] = 'application/json; charset=UTF-8' ;
36+ requestParams . headers [ 'X-User-Agent' ] = 'contentstack-{{PLATFORM}}/' + version ;
3737
38- if ( options . body && typeof options . body === 'object' ) {
39- delete options . body . _method ;
40- if ( typeof options . body . query === "object" && Object . keys ( options . body . query ) . length === 0 ) delete options . body . query ;
41- queryParams = serialize ( options . body ) ;
38+ if ( requestParams . body && typeof requestParams . body === 'object' ) {
39+ delete requestParams . body . _method ;
40+ if ( typeof requestParams . body . query === "object" && Object . keys ( requestParams . body . query ) . length === 0 ) delete requestParams . body . query ;
41+ queryParams = serialize ( requestParams . body ) ;
4242 }
4343
44- return fetchRetry ( url + '?' + queryParams ,
45- headers ,
44+ return fetchRetry ( stack , queryParams ,
4645 fetchOptions ,
4746 resolve ,
4847 reject ,
@@ -58,7 +57,10 @@ function wait(retryDelay) {
5857 } ) ;
5958}
6059
61- function fetchRetry ( url , headers , fetchOptions , resolve , reject , retryDelay = 300 , retryLimit = 5 ) {
60+ function fetchRetry ( stack , queryParams , fetchOptions , resolve , reject , retryDelay = 300 , retryLimit = 5 ) {
61+ let requestParams = stack . requestParams ,
62+ url = requestParams . url + '?' + queryParams ,
63+ headers = requestParams . headers
6264 var option = Utils . mergeDeep ( {
6365 method : 'GET' ,
6466 headers : headers ,
@@ -83,20 +85,38 @@ function fetchRetry(url, headers, fetchOptions, resolve, reject, retryDelay = 30
8385 }
8486 wait ( msDelay )
8587 . then ( ( ) => {
86- return fetchRetry ( url , headers , fetchOptions , resolve , reject , retryDelay , retryLimit )
88+ return fetchRetry ( stack , queryParams , fetchOptions , resolve , reject , retryDelay , retryLimit )
8789 } )
8890 . catch ( ( ) => {
89- return fetchRetry ( url , headers , fetchOptions , resolve , reject , retryDelay , retryLimit )
91+ return fetchRetry ( stack , queryParams , fetchOptions , resolve , reject , retryDelay , retryLimit )
9092 } )
9193 }
9294 }
95+
9396 if ( fetchOptions . debug ) fetchOptions . logHandler ( 'info' , { url : url , option : option } ) ;
97+
98+ var plugins = stack . plugins ;
99+ if ( plugins && plugins != undefined )
100+ plugins . forEach ( pluginObj => {
101+ pluginObj . onRequest ( stack , { url, option} )
102+ } ) ;
103+
94104 fetch ( url , option )
95- . then ( function ( response ) {
105+ . then ( function ( response ) {
106+
107+
96108 if ( fetchOptions . debug ) fetchOptions . logHandler ( 'info' , response ) ;
97- let data = response . json ( ) ;
109+ let data = response . json ( ) ;
110+
98111 if ( response . ok && response . status === 200 ) {
99- resolve ( data ) ;
112+ data . then ( json => {
113+ if ( plugins ) json . plugins = [ ] ;
114+ for ( let index = 0 ; index < plugins . length ; index ++ ) {
115+ json = plugins [ index ] . onResponse ( stack , { url, option} , response , json )
116+ }
117+ resolve ( json ) ;
118+ } )
119+
100120 } else {
101121 data . then ( ( json ) => {
102122 if ( fetchOptions . retryCondition && fetchOptions . retryCondition ( response ) ) {
0 commit comments