Skip to content
Snippets Groups Projects
parsing.js 1.88 KiB
Newer Older
  • Learn to ignore specific revisions
  • Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    // @ts-check
    const { log } = require('cozy-konnector-libs')
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    const moment = require('moment')
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    
    /**
     * Return start date
     * @param {string} result
     * @returns {string}
     */
    function parseSgeXmlTechnicalData(result) {
      log('info', 'Parsing technical data')
      let json = JSON.stringify(result)
      return JSON.parse(json)['Envelope']['Body'][
        'consulterDonneesTechniquesContractuellesResponse'
      ]['point']['donneesGenerales'][
        'dateDerniereModificationFormuleTarifaireAcheminement'
      ]
    }
    
    /**
     *
     * @param {string} result
     * @returns {SGEData[]}
     */
    function parseSgeXmlData(result) {
      log('info', 'Parsing list of documents')
      let json = JSON.stringify(result)
      return JSON.parse(json)['Envelope']['Body'][
        'consulterMesuresDetailleesResponse'
      ]['grandeur']['mesure']
    }
    
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    /**
     * 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 => {
        let 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')),
        }
      })
    }
    
    /**
     * 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
    }
    
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    module.exports = {
      parseSgeXmlData,
      parseSgeXmlTechnicalData,
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      formateDataForDoctype,
      parseTags,
      parseValue,
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    }