From 4d2806a94e944503d45a1f1d73f6f5ede889746a Mon Sep 17 00:00:00 2001 From: Bastien DUMONT <bdumont@grandlyon.com> Date: Mon, 18 Sep 2023 15:26:24 +0000 Subject: [PATCH] fix: handle passerelle down --- src/core/findUserPdl.js | 88 +++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 39 deletions(-) diff --git a/src/core/findUserPdl.js b/src/core/findUserPdl.js index 3c5bba7..137a8cc 100644 --- a/src/core/findUserPdl.js +++ b/src/core/findUserPdl.js @@ -32,50 +32,60 @@ async function findUserPdl( apikey: apiAuthKey, } - const { response } = await soapRequest({ - url: url, - headers: sgeHeaders, - xml: rechercherPoint( - appLogin, - lastname, - postalCode, - inseeCode, - address, - escalierEtEtageEtAppartement - ), - }).catch(err => { - const errorMessage = 'Error while finding user pdl : ' + err.message - log('error', errorMessage) - Sentry.captureException(errorMessage, { + try { + const { response } = await soapRequest({ + url: url, + headers: sgeHeaders, + xml: rechercherPoint( + appLogin, + lastname, + postalCode, + inseeCode, + address, + escalierEtEtageEtAppartement + ), + }).catch(err => { + const errorMessage = 'Error while finding user pdl : ' + err.message + log('error', errorMessage) + Sentry.captureException(errorMessage, { + tags: { + section: 'findUserPdl', + }, + extra: { + address: address, + postalCode: postalCode, + escalierEtEtageEtAppartement: escalierEtEtageEtAppartement, + }, + }) + throw new Error(errors.VENDOR_DOWN) + }) + + const parsedReply = await xml2js.parseStringPromise(response.body, { + tagNameProcessors: [parseTags], + valueProcessors: [parseValue], + explicitArray: false, + }) + + try { + return parseUserPdl(parsedReply) + } catch (error) { + log('warn', 'Error while parsing user PDL: ' + error) + if (parsedReply.Envelope.Body.Fault) { + log( + 'warn', + `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}` + ) + } + return null + } + } catch (error) { + log('error', 'Error while findingUserPdl', error) + Sentry.captureException(error, { tags: { section: 'findUserPdl', }, - extra: { - address: address, - postalCode: postalCode, - escalierEtEtageEtAppartement: escalierEtEtageEtAppartement, - }, }) throw new Error(errors.VENDOR_DOWN) - }) - - const parsedReply = await xml2js.parseStringPromise(response.body, { - tagNameProcessors: [parseTags], - valueProcessors: [parseValue], - explicitArray: false, - }) - - try { - return parseUserPdl(parsedReply) - } catch (error) { - log('warn', 'Error while parsing user PDL: ' + error) - if (parsedReply.Envelope.Body.Fault) { - log( - 'warn', - `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}` - ) - } - return null } } -- GitLab