@@ -16,57 +16,54 @@ module.exports = (config) => {
1616 if ( original ) {
1717 global . fetch = async ( requestUrl , options ) => {
1818 const parsedUrl = url . parse ( requestUrl ) ;
19+ const params = Object . fromEntries ( new URLSearchParams ( parsedUrl . search ) ) ;
1920 let correlationId ;
2021 if ( options && options . headers ) {
2122 correlationId = options . headers [ 'Dgp-Correlation' ] || options . headers [ 'dgp-correlation' ] || validatedConfig . correlationIdfallback ;
2223 }
2324
2425 const timer = startTimer ( ) ;
25- const response = await original ( requestUrl , options )
26- const duration = timer . getDuration ( ) ;
2726 const req = {
2827 headers : options ?. headers || undefined ,
2928 host : parsedUrl . host ,
30- path : parsedUrl . path ,
29+ path : parsedUrl . pathname ,
3130 method : options ?. method || 'GET' ,
32- payload : options ?. body || undefined ,
31+ payload : options ?. body || params ,
3332 search : parsedUrl . search ,
3433 } ;
35- const res = {
36- status : response . status ,
37- duration,
38- } ;
39- const log = logRequest ( logger , correlationId , req , res , parsedUrl . protocol ) ;
40- let logged = false ;
41- if ( validatedConfig . logResponsePayload ) {
42- const json = ( ) =>
43- response
44- . clone ( )
45- . json ( )
46- . then ( ( data ) => {
47- log ( data ) ;
48- logged = true ;
49- return ( data )
50- } ) ;
51- const text = ( ) =>
52- response
53- . clone ( )
54- . text ( )
55- . then ( ( data ) => {
56- log ( data ) ;
57- logged = true ;
58- return ( data )
59- } ) ;
60- // Response is not parsed json/text
61- setTimeout ( ( ) => {
62- if ( ! logged ) log ( ) ;
63- } , 1 )
64- response . json = json ;
65- response . text = text ;
66- } else {
34+ try {
35+ const response = await original ( requestUrl , options )
36+ const duration = timer . getDuration ( ) ;
37+ const res = {
38+ headers : Object . fromEntries ( response . headers ) ,
39+ status : response . status ,
40+ duration,
41+ } ;
42+ const log = logRequest ( logger , correlationId , req , res , parsedUrl . protocol ) ;
43+ if ( validatedConfig . logResponsePayload ) {
44+ try {
45+ if ( response . json ) {
46+ const json = await response . clone ( ) . json ( ) ;
47+ log ( json ) ;
48+ }
49+ } catch {
50+ const text = await response . clone ( ) . text ( ) ;
51+ log ( text ) ;
52+ }
53+ } else {
54+ log ( ) ;
55+ }
56+ return response ;
57+ } catch ( e ) {
58+ const duration = timer . getDuration ( ) ;
59+ const res = {
60+ status : `${ e . message } : ${ e . cause ?. code } ` ,
61+ duration,
62+ } ;
63+ const log = logRequest ( logger , correlationId , req , res , parsedUrl . protocol ) ;
6764 log ( ) ;
65+ throw e ;
6866 }
69- return response ;
7067 }
7168 }
7269
0 commit comments