Skip to content
Snippets Groups Projects
index.js 7.55 MiB
Newer Older
  • Learn to ignore specific revisions
  • Hugo SUBTIL's avatar
    Hugo SUBTIL committed
     * @param {Function} callback
     * @returns {Function}
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
     */
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    module.exports = function spread(callback) {
      return function wrap(arr) {
        return callback.apply(null, arr);
      };
    };
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    
    /***/ }),
    /* 1597 */
    /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
    
    "use strict";
    
    
    var utils = __webpack_require__(1563);
    
    /**
     * Determines whether the payload is an error thrown by Axios
     *
     * @param {*} payload The value to test
     * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
     */
    module.exports = function isAxiosError(payload) {
      return utils.isObject(payload) && (payload.isAxiosError === true);
    };
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    /* 1598 */
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
    
    // @ts-check
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    const { log, errors } = __webpack_require__(1)
    const soapRequest = __webpack_require__(1331)
    const { parseTags, parseValue, parseServiceId } = __webpack_require__(1555)
    const { commanderCollectePublicationMesures } = __webpack_require__(1556)
    const xml2js = __webpack_require__(1513)
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
     * @param {string} url
     * @param {string} apiAuthKey
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
     * @param {string} name
     * @param {number} pointId
     * @param {string} startDate
     * @param {string} endDate
     * @return {Promise<number>} User contractId
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
     */
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    async function activateContract(
      url,
      apiAuthKey,
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      contractId,
      name,
      pointId,
      startDate,
      endDate
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    ) {
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      log('info', 'activateContract')
      const sgeHeaders = {
        'Content-Type': 'text/xml;charset=UTF-8',
        apikey: apiAuthKey,
      }
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      const { response } = await soapRequest({
        url: url,
        headers: sgeHeaders,
        xml: commanderCollectePublicationMesures(
          appLogin,
          contractId,
          pointId,
          name,
          startDate,
          endDate
        ),
      }).catch(err => {
        log('error', 'commanderCollectePublicationMesures')
        log('error', err)
        throw errors.LOGIN_FAILED
      })
    
      const parsedReply = await xml2js.parseStringPromise(response.body, {
        tagNameProcessors: [parseTags],
        valueProcessors: [parseValue],
        explicitArray: false,
      })
    
      try {
        return parseServiceId(parsedReply)
      } catch (error) {
        log('error', 'Error whileactivating contract: ' + error)
        throw errors.LOGIN_FAILED
      }
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    module.exports = { activateContract }
    
    
    /***/ }),
    /* 1599 */
    /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
    
    // @ts-check
    const { log, errors } = __webpack_require__(1)
    const soapRequest = __webpack_require__(1331)
    const { parseTags, parseValue, parseContracts } = __webpack_require__(1555)
    const { rechercherServicesSouscritsMesures } = __webpack_require__(1556)
    const xml2js = __webpack_require__(1513)
    const { contractState } = __webpack_require__(1600)
    
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    /**
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
     * @param {string} url
     * @param {string} apiAuthKey
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
     * @param {number} pointId
     * @return {Promise<number | null>} User contractId
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
     */
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    async function verifyContract(url, apiAuthKey, appLogin, contractId, pointId) {
      log('info', 'verifyContract')
      const sgeHeaders = {
        'Content-Type': 'text/xml;charset=UTF-8',
        apikey: apiAuthKey,
      }
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      const { response } = await soapRequest({
        url: `${url}/enedis_SGE_RechercheServicesMesures/1.0`,
        headers: sgeHeaders,
        xml: rechercherServicesSouscritsMesures(appLogin, contractId, pointId),
      }).catch(err => {
        log('error', 'rechercherServicesSouscritsMesures')
        log('error', err)
        throw errors.LOGIN_FAILED
      })
    
      const parsedReply = await xml2js.parseStringPromise(response.body, {
        tagNameProcessors: [parseTags],
        valueProcessors: [parseValue],
        explicitArray: false,
      })
    
      try {
        const currentContract = parseContracts(parsedReply)[0]
        if (currentContract.etatCode === contractState.ACTIF)
          return currentContract.serviceSouscritId
        return null
      } catch (error) {
        log('error', 'Error while parsing user contract: ' + error)
        throw errors.LOGIN_FAILED
      }
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    module.exports = { verifyContract }
    
    
    /***/ }),
    /* 1600 */
    /***/ ((module) => {
    
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
     * Enum for contract-state values.
     * @readonly
     * @enum {number}
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    const contractState = {
      TERMINE: 'TERMINE',
      ACTIF: 'ACTIF',
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    module.exports = { contractState }
    
    
    /***/ }),
    /* 1601 */
    /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
    
    // @ts-check
    const { log, errors } = __webpack_require__(1)
    const soapRequest = __webpack_require__(1331)
    const { parseTags, parseValue } = __webpack_require__(1555)
    const { commanderArretServiceSouscritMesures } = __webpack_require__(1556)
    const xml2js = __webpack_require__(1513)
    
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
     * @param {string} url
     * @param {string} apiAuthKey
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
     * @param {number} pointId
     * @param {number} serviceId
     * @return {Promise<string>} User contractId
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    async function terminateContract(
      url,
      apiAuthKey,
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      serviceId
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      log('info', 'activateContract')
      const sgeHeaders = {
        'Content-Type': 'text/xml;charset=UTF-8',
        apikey: apiAuthKey,
      }
    
      const { response } = await soapRequest({
        url: url,
        headers: sgeHeaders,
        xml: commanderArretServiceSouscritMesures(
          appLogin,
          contractId,
          pointId,
          serviceId
        ),
      }).catch(err => {
        log('error', 'commanderArretServiceSouscritMesures')
        log('error', err)
        throw errors.VENDOR_DOWN
      })
    
      const parsedReply = await xml2js.parseStringPromise(response.body, {
        tagNameProcessors: [parseTags],
        valueProcessors: [parseValue],
        explicitArray: false,
      })
    
      try {
        // We don't need any action on reply for now
        return parsedReply
      } catch (error) {
        log('error', 'Error while parsing user contract termination: ' + error)
        throw errors.VENDOR_DOWN
      }
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    module.exports = { terminateContract }
    
    
    /***/ }),
    /* 1602 */
    /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
    
    const { log, updateOrCreate } = __webpack_require__(1)
    const { iSLocal } = __webpack_require__(1603)
    const cozyClient = __webpack_require__(485)
    
    async function saveAccountData(accountId, accountData) {
      log('info', `saveAccountData: ${accountId}`)
    
      let account = await getAccount(accountId)
    
      account = await updateOrCreate(
        [{ ...account, data: accountData }],
        'io.cozy.accounts'
      )
      return account
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    async function getAccount(accountId) {
      log('info', `getAccount: ${accountId}`)
      //TODO: refactor with usageof cozy-libs. Not working during implementation
      const accounts = await cozyClient.data.findAll('io.cozy.accounts')
      return accounts.filter(account =>
        iSLocal() ? account._id === accountId : account.account_type === accountId
      )[0]
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
    module.exports = { getAccount, saveAccountData }
    
    
    /***/ }),
    /* 1603 */
    /***/ ((module) => {
    
    function iSLocal() {
      return process.env.NODE_ENV === 'development' || process.env.NODE_ENV
    }
    
    module.exports = { iSLocal }
    
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    
    /***/ })
    /******/ 	]);
    /************************************************************************/
    /******/ 	// The module cache
    /******/ 	var __webpack_module_cache__ = {};
    /******/ 	
    /******/ 	// The require function
    /******/ 	function __webpack_require__(moduleId) {
    /******/ 		// Check if module is in cache
    /******/ 		var cachedModule = __webpack_module_cache__[moduleId];
    /******/ 		if (cachedModule !== undefined) {
    /******/ 			return cachedModule.exports;
    /******/ 		}
    /******/ 		// Create a new module (and put it into the cache)
    /******/ 		var module = __webpack_module_cache__[moduleId] = {
    /******/ 			id: moduleId,
    /******/ 			loaded: false,
    /******/ 			exports: {}
    /******/ 		};
    /******/ 	
    /******/ 		// Execute the module function
    /******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    /******/ 	
    /******/ 		// Flag the module as loaded
    /******/ 		module.loaded = true;
    /******/ 	
    /******/ 		// Return the exports of the module
    /******/ 		return module.exports;
    /******/ 	}
    /******/ 	
    /******/ 	// expose the module cache
    /******/ 	__webpack_require__.c = __webpack_module_cache__;
    /******/ 	
    /************************************************************************/
    /******/ 	/* webpack/runtime/compat get default export */
    /******/ 	(() => {
    /******/ 		// getDefaultExport function for compatibility with non-harmony modules
    /******/ 		__webpack_require__.n = (module) => {
    /******/ 			var getter = module && module.__esModule ?
    /******/ 				() => (module['default']) :
    /******/ 				() => (module);
    /******/ 			__webpack_require__.d(getter, { a: getter });
    /******/ 			return getter;
    /******/ 		};
    /******/ 	})();
    /******/ 	
    /******/ 	/* webpack/runtime/define property getters */
    /******/ 	(() => {
    /******/ 		// define getter functions for harmony exports
    /******/ 		__webpack_require__.d = (exports, definition) => {
    /******/ 			for(var key in definition) {
    /******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
    /******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
    /******/ 				}
    /******/ 			}
    /******/ 		};
    /******/ 	})();
    /******/ 	
    /******/ 	/* webpack/runtime/hasOwnProperty shorthand */
    /******/ 	(() => {
    /******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
    /******/ 	})();
    /******/ 	
    /******/ 	/* webpack/runtime/make namespace object */
    /******/ 	(() => {
    /******/ 		// define __esModule on exports
    /******/ 		__webpack_require__.r = (exports) => {
    /******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
    /******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
    /******/ 			}
    /******/ 			Object.defineProperty(exports, '__esModule', { value: true });
    /******/ 		};
    /******/ 	})();
    /******/ 	
    /******/ 	/* webpack/runtime/node module decorator */
    /******/ 	(() => {
    /******/ 		__webpack_require__.nmd = (module) => {
    /******/ 			module.paths = [];
    /******/ 			if (!module.children) module.children = [];
    /******/ 			return module;
    /******/ 		};
    /******/ 	})();
    /******/ 	
    /************************************************************************/
    /******/ 	
    /******/ 	// module cache are used so entry inlining is disabled
    /******/ 	// startup
    /******/ 	// Load entry module and return exports
    /******/ 	var __webpack_exports__ = __webpack_require__(__webpack_require__.s = 0);
    /******/ 	
    /******/ })()
    ;