Newer
Older
// @ts-check
const { log } = require('cozy-konnector-libs')
/**
* Return User PDL
* @param {string} result
* @returns {string}
*/
function parseUserPdl(result) {
log('info', 'Parsing User Pdl')
const json = JSON.stringify(result)
return JSON.parse(json)['Envelope']['Body']['rechercherPointResponse'][
'points'
]['point']['$'].id
}

Bastien DUMONT
committed
* Return User contract start date
* @param {string} result
* @returns {string}
*/

Bastien DUMONT
committed
function parseContractStartDate(result) {
log('info', 'Parsing contract start date')
return JSON.parse(json)['Envelope']['Body'][
'consulterDonneesTechniquesContractuellesResponse'
]['point']['donneesGenerales'][
'dateDerniereModificationFormuleTarifaireAcheminement'
]
}
/**
* Return User address
* @param {string} result
* @returns {Address}
*/
function parseUserAddress(result) {
log('info', 'Parsing user Address')
const json = JSON.stringify(result)
return JSON.parse(json)['Envelope']['Body'][
'consulterDonneesTechniquesContractuellesResponse'
]['point']['donneesGenerales']['adresseInstallation']
}

Bastien DUMONT
committed
/**
* Return User contract start date
* @param {string} result
* @returns {Contract[] | Contract}
*/
function parseContracts(result) {
log('info', 'Parsing contract')
const json = JSON.stringify(result)
return JSON.parse(json)['Envelope']['Body'][
'rechercherServicesSouscritsMesuresResponse'
]['servicesSouscritsMesures']['serviceSouscritMesures']
}
/**
* Return User contract start date
* @param {string} result
* @returns {number}
*/
function parseServiceId(result) {
log('info', 'Parsing serviceId')
const json = JSON.stringify(result)
return JSON.parse(json)['Envelope']['Body'][
'commanderCollectePublicationMesuresResponse'
]['serviceSouscritId']
}
* @param {string} result
* @returns {SGEData[]}
*/
function parseSgeXmlData(result) {
log('info', 'Parsing list of documents')
return JSON.parse(json)['Envelope']['Body'][
'consulterMesuresDetailleesResponse'
]['grandeur']['mesure']
}
/**
* Format data for DB storage
* @param {SGEData[]} data
* @returns {Promise<EnedisKonnectorData[]>} Parsed timestamp array
*/
async function formateDataForDoctype(data) {
log('info', 'Formating data')
return data.map(record => {
const date = moment(record.d, 'YYYY/MM/DD h:mm:ss')
return {
load: record.v,
year: parseInt(date.format('YYYY')),
month: parseInt(date.format('M')),
day: parseInt(date.format('D')),
hour: parseInt(date.format('H')),
minute: parseInt(date.format('m')),
}
})
}
/**
* Check if response contains contracts
* @param {string} parsedReply
* @return {boolean}
*/
function checkContractExists(parsedReply) {
const json = JSON.stringify(parsedReply)
return JSON.parse(json)['Envelope']['Body'][
'rechercherServicesSouscritsMesuresResponse'
]['servicesSouscritsMesures']
}
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/**
* Format tag in order to be manipulated easly
* @param {string} name
* @returns {string} name
*/
function parseTags(name) {
if (name.split(':')[1] !== undefined) {
return name.split(':')[1]
}
return name
}
/**
*
* @param {string} value
* @param {string} name
* @returns {string|number} value
*/
function parseValue(value, name) {
// Wh => KWh
if (name === 'v') {
return parseFloat((parseInt(value) / 1000).toFixed(2))
}
return value
}
/**
*
* @param {string} value
* @param {string} name
* @returns {string|number} value
*/
function parseValueHalfHour(value, name) {
// W * 1/2h => KW * h
if (name === 'v') {
return parseFloat((parseInt(value) / 2000).toFixed(2))
}
return value
}
/**
* Remove SGE useless multiple white spaces
* @param {string} str
* @returns {string}
*/
function removeMultipleSpaces(str) {
return str.replace(/ +/g, ' ')
}
/**
* Remove SGE address number
* @param {string} str
* @returns {string}
*/
function removeAddressnumber(str) {
return str.replace(/\d+ |b |B |T |t |\d+/g, '')
}

Bastien DUMONT
committed
parseContracts,
parseContractStartDate,
parseServiceId,
parseUserAddress,
parseUserPdl,
parseValue,
parseValueHalfHour,
removeAddressnumber,