@@ -195,14 +195,19 @@ async function getCsrfTokenValue() {
195195 try {
196196 const healthcheckData = await fetch ( healthcheckUrl , { credentials : 'include' } ) ;
197197
198- const setCookies = 'getSetCookie' in healthcheckData . headers && typeof healthcheckData . headers . getSetCookie === 'function'
199- ? healthcheckData . headers . getSetCookie ( )
200- : undefined ;
198+ const cookiesToSet = (
199+ healthcheckData . headers as ( Headers & { getSetCookie : ( ) => string [ ] } )
200+ ) . getSetCookie ( ) ;
201201
202- // FIXME: do a proper parsing
203- const token = setCookies ?. [ 0 ] . split ( '; ' ) [ 0 ] . split ( '=' ) [ 1 ] ;
202+ const parsedCookiesToSet = cookiesToSet
203+ . flatMap ( ( item : string ) => item . split ( '; ' ) )
204+ . map ( ( item : string ) => {
205+ const [ key , value ] = item . split ( '=' ) ;
206+ return { key, value } as { key : string , value : string } ;
207+ } ) ;
204208
205- return token ;
209+ const csrfToken = parsedCookiesToSet . find ( ( item ) => item . key === COOKIE_NAME ) ;
210+ return csrfToken ?. value ;
206211 } catch ( err ) {
207212 // eslint-disable-next-line no-console
208213 console . error ( 'failed to do the healthcheck' , healthcheckUrl ) ;
@@ -223,9 +228,14 @@ async function fetchAndWriteData() {
223228 console . error ( 'Could not fetch crsf token' ) ;
224229 return ;
225230 }
231+ const referer = process . env . MAPSWIPE_REFERER_ENDPOINT ?? baseUrl ;
232+
233+ console . log ( 'CSRF Token exists:' , ! ! csrfTokenValue ) ;
234+ console . log ( 'Referer exists:' , ! ! referer ) ;
235+
226236 graphQLClient . setHeader ( 'X-CSRFToken' , csrfTokenValue ) ;
227237 graphQLClient . setHeader ( 'Cookie' , `${ COOKIE_NAME } =${ csrfTokenValue } ` ) ;
228- graphQLClient . setHeader ( 'Referer' , process . env . MAPSWIPE_REFERER_ENDPOINT ?? '' ) ;
238+ graphQLClient . setHeader ( 'Referer' , referer ) ;
229239 data = ( await graphQLClient . request ( query ) ) as AllDataQuery ;
230240 }
231241
0 commit comments