import { getAPIHeaders } from './getAPIHeaders'; import { getDuffelAPIUrl } from './getDuffelAPIUrl'; import { ThreeDSecureSession } from './types'; export async function refresh3DSSessionInDuffelAPI( clientKey: string, sessionID: string, overrideDuffelAPIUrl?: string, isFirstAttempt = true ): Promise { const response = await fetch( `${getDuffelAPIUrl(overrideDuffelAPIUrl)}/payments/three_d_secure_sessions/${sessionID}/actions/refresh`, { method: 'POST', headers: getAPIHeaders(clientKey), } ); const responseData = await response.json(); // We retry once if (response.status >= 500) { if (!isFirstAttempt) { throw responseData['data']; } else { return refresh3DSSessionInDuffelAPI( clientKey, sessionID, overrideDuffelAPIUrl, false ); } } return responseData['data']; }