Newer
Older
228001
228002
228003
228004
228005
228006
228007
228008
228009
228010
228011
228012
228013
228014
228015
228016
228017
228018
228019
228020
228021
228022
228023
228024
228025
228026
228027
228028
};
/**
* Assert object's properties type
* @param {object} options
* @param {object} schema
* @param {boolean?} allowUnknown
*/
function assertOptions(options, schema, allowUnknown) {
if (typeof options !== 'object') {
throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
}
var keys = Object.keys(options);
var i = keys.length;
while (i-- > 0) {
var opt = keys[i];
var validator = schema[opt];
if (validator) {
var value = options[opt];
var result = value === undefined || validator(value, opt, options);
if (result !== true) {
throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
}
continue;
}
if (allowUnknown !== true) {
throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
assertOptions: assertOptions,
validators: validators
};
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var CanceledError = __webpack_require__(1586);
* A `CancelToken` is an object that can be used to request cancellation of an operation.
*
* @class
* @param {Function} executor The executor function.
228054
228055
228056
228057
228058
228059
228060
228061
228062
228063
228064
228065
228066
228067
228068
228069
228070
228071
228072
228073
228074
228075
228076
228077
228078
228079
228080
228081
228082
228083
228084
228085
228086
228087
228088
228089
228090
228091
228092
228093
228094
228095
228096
228097
228098
228099
228100
228101
228102
228103
228104
function CancelToken(executor) {
if (typeof executor !== 'function') {
throw new TypeError('executor must be a function.');
}
var resolvePromise;
this.promise = new Promise(function promiseExecutor(resolve) {
resolvePromise = resolve;
});
var token = this;
// eslint-disable-next-line func-names
this.promise.then(function(cancel) {
if (!token._listeners) return;
var i;
var l = token._listeners.length;
for (i = 0; i < l; i++) {
token._listeners[i](cancel);
}
token._listeners = null;
});
// eslint-disable-next-line func-names
this.promise.then = function(onfulfilled) {
var _resolve;
// eslint-disable-next-line func-names
var promise = new Promise(function(resolve) {
token.subscribe(resolve);
_resolve = resolve;
}).then(onfulfilled);
promise.cancel = function reject() {
token.unsubscribe(_resolve);
};
return promise;
};
executor(function cancel(message) {
if (token.reason) {
// Cancellation has already been requested
return;
}
token.reason = new CanceledError(message);
resolvePromise(token.reason);
});
* Throws a `CanceledError` if cancellation has been requested.
CancelToken.prototype.throwIfRequested = function throwIfRequested() {
if (this.reason) {
throw this.reason;
}
};
CancelToken.prototype.subscribe = function subscribe(listener) {
if (this.reason) {
listener(this.reason);
return;
}
if (this._listeners) {
this._listeners.push(listener);
} else {
this._listeners = [listener];
}
};
CancelToken.prototype.unsubscribe = function unsubscribe(listener) {
if (!this._listeners) {
return;
228141
228142
228143
228144
228145
228146
228147
228148
228149
228150
228151
228152
228153
228154
228155
228156
228157
228158
228159
228160
228161
228162
228163
228164
228165
var index = this._listeners.indexOf(listener);
if (index !== -1) {
this._listeners.splice(index, 1);
}
};
/**
* Returns an object that contains a new `CancelToken` and a function that, when called,
* cancels the `CancelToken`.
*/
CancelToken.source = function source() {
var cancel;
var token = new CancelToken(function executor(c) {
cancel = c;
});
return {
token: token,
cancel: cancel
};
};
module.exports = CancelToken;
/***/ }),
/***/ ((module) => {
"use strict";
* Syntactic sugar for invoking a function and expanding an array for arguments.
228175
228176
228177
228178
228179
228180
228181
228182
228183
228184
228185
228186
228187
228188
228189
228190
* Common use case would be to use `Function.prototype.apply`.
*
* ```js
* function f(x, y, z) {}
* var args = [1, 2, 3];
* f.apply(null, args);
* ```
*
* With `spread` this example can be re-written.
*
* ```js
* spread(function(x, y, z) {})([1, 2, 3]);
* ```
*
* @param {Function} callback
* @returns {Function}
module.exports = function spread(callback) {
return function wrap(arr) {
return callback.apply(null, arr);
};
};
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(1566);
/**
* 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);
};
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
const { activateContract } = __webpack_require__(1602)
const { getContractStartDate } = __webpack_require__(1603)
const { terminateContract } = __webpack_require__(1604)
const { verifyContract } = __webpack_require__(1605)
const { findUserPdl } = __webpack_require__(1607)
const { verifyUserIdentity } = __webpack_require__(1608)
const { findUserAddress } = __webpack_require__(1610)
module.exports = {
activateContract,
getContractStartDate,
terminateContract,
verifyContract,
findUserPdl,
verifyUserIdentity,
findUserAddress,
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { log, errors } = __webpack_require__(1)
const soapRequest = __webpack_require__(1337)
const { parseTags, parseValue, parseServiceId } = __webpack_require__(1561)
const { commanderCollectePublicationMesures } = __webpack_require__(1562)
const xml2js = __webpack_require__(1519)
/**
* @param {string} url
* @param {string} apiAuthKey
* @param {string} appLogin
* @param {string} name
* @param {number} pointId
* @param {string} startDate
* @param {string} endDate
* @return {Promise<number>} User contractId
pointId,
startDate,
endDate
const sgeHeaders = {
'Content-Type': 'text/xml;charset=UTF-8',
apikey: apiAuthKey,
}
const { response } = await soapRequest({
url: `${url}/enedis_SGE_CommandeCollectePublicationMesures/1.0`,
xml: commanderCollectePublicationMesures(
appLogin,
contractId,
pointId,
name,
startDate,
endDate
),
log('error', 'commanderCollectePublicationMesures')
log('error', err)
throw errors.LOGIN_FAILED
})
const parsedReply = await xml2js.parseStringPromise(response.body, {
tagNameProcessors: [parseTags],
valueProcessors: [parseValue],
explicitArray: false,
})
try {
log('error', 'Error while activating contract: ' + error)
if (parsedReply.Envelope.Body.Fault) {
log(
'error',
`Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
)
}
//TODO: handle SGT4B8: Il existe déjà plusieurs demandes en cours sur le point ?
throw errors.LOGIN_FAILED
}
}
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { log, errors } = __webpack_require__(1)
const soapRequest = __webpack_require__(1337)
const {
parseTags,
parseValue,
parseContractStartDate,
} = __webpack_require__(1561)
const xml2js = __webpack_require__(1519)
const { consulterDonneesTechniquesContractuelles } = __webpack_require__(1562)
* Get user contract start date
* @param {string} url
* @param {string} apiAuthKey
* @param {string} userLogin
* @param {number} pointId
* @returns {Promise<string>}
async function getContractStartDate(url, apiAuthKey, userLogin, pointId) {
log('info', 'Fetching data start date')
const sgeHeaders = {
'Content-Type': 'text/xml;charset=UTF-8',
apikey: apiAuthKey,
}
const { response } = await soapRequest({
url: `${url}/enedis_SGE_ConsultationDonneesTechniquesContractuelles/1.0`,
headers: sgeHeaders,
xml: consulterDonneesTechniquesContractuelles(pointId, userLogin),
}).catch(err => {
log('error', 'Error while fetching contract start date : ' + err)
throw errors.VENDOR_DOWN
})
const result = await xml2js.parseStringPromise(response.body, {
tagNameProcessors: [parseTags],
valueProcessors: [parseValue],
explicitArray: false,
})
try {
return parseContractStartDate(result)
log('error', 'Error while processing contract start date: ' + error)
`Enedis issue ${result.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${result.Envelope.Body.Fault.faultstring}`
module.exports = { getContractStartDate }
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const soapRequest = __webpack_require__(1337)
const { parseTags, parseValue } = __webpack_require__(1561)
const { commanderArretServiceSouscritMesures } = __webpack_require__(1562)
const xml2js = __webpack_require__(1519)
* @param {string} url
* @param {string} apiAuthKey
* @param {string} appLogin
* @param {number} serviceId
* @return {Promise<string>} User contractId
const sgeHeaders = {
'Content-Type': 'text/xml;charset=UTF-8',
apikey: apiAuthKey,
}
url: `${url}/enedis_SGE_CommandeArretServiceSouscritMesures/1.0`,
xml: commanderArretServiceSouscritMesures(
log('error', 'commanderArretServiceSouscritMesures')
})
const parsedReply = await xml2js.parseStringPromise(response.body, {
tagNameProcessors: [parseTags],
valueProcessors: [parseValue],
explicitArray: false,
})
try {
// We don't need any action on reply for now
if (parsedReply.Envelope.Body.Fault) {
log(
'error',
`Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
)
}
return parsedReply
log('error', 'Error while parsing user contract termination: ' + error)
log('error', `Enedis issue ${JSON.stringify(parsedReply.Envelope.Body)}`)
throw errors.VENDOR_DOWN
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { log, errors } = __webpack_require__(1)
const soapRequest = __webpack_require__(1337)
const {
parseTags,
parseValue,
parseContracts,
checkContractExists,
} = __webpack_require__(1561)
const { rechercherServicesSouscritsMesures } = __webpack_require__(1562)
const xml2js = __webpack_require__(1519)
const { contractState, contractLibelle } = __webpack_require__(1606)
* @param {string} url
* @param {string} apiAuthKey
* @param {string} appLogin
* @param {number} pointId
* @return {Promise<number | null>} User contractId
async function verifyContract(url, apiAuthKey, appLogin, contractId, pointId) {
log('info', 'verifyContract')
const sgeHeaders = {
'Content-Type': 'text/xml;charset=UTF-8',
apikey: apiAuthKey,
}
228483
228484
228485
228486
228487
228488
228489
228490
228491
228492
228493
228494
228495
228496
228497
228498
228499
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 {
if (!checkContractExists(parsedReply)) {
log('error', 'no contract found')
return null
}
const currentContracts = parseContracts(parsedReply)
let currentContract = null
if (Array.isArray(currentContracts)) {
currentContract = parseContracts(parsedReply)[0]
} else {
currentContract = currentContracts
}
if (
(currentContract.etatCode === contractState.ACTIF ||
currentContract.etatCode === contractState.DEMANDE) &&
currentContract.serviceSouscritLibelle === contractLibelle.ACTIF
)
return currentContract.serviceSouscritId
return null
} catch (error) {
log('error', 'Error while parsing user contract: ' + error)
if (parsedReply.Envelope.Body.Fault) {
log(
'error',
`Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
)
}
build-token
committed
log(
'error',
'if an erorr is thrown here, it probably means that the contract has already been open today and that enedis cannot open a second one. Wait until tomorow to try again'
)
module.exports = { verifyContract }
/***/ }),
* Enum for contract-state values.
* @readonly
* @enum {number}
const contractState = {
TERMINE: 'TERMINE',
ACTIF: 'ACTIF',
DEMANDE: 'DEMANDE',
}
/**
* Enum for contractLibelle values.
* @readonly
* @enum {number}
*/
const contractLibelle = {
ACTIF:
'Collecte de la courbe de charge au pas 30 min avec transmission quotidienne des données brutes en soutirage',
module.exports = { contractState, contractLibelle }
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { log, errors } = __webpack_require__(1)
const soapRequest = __webpack_require__(1337)
const { parseUserPdl, parseTags, parseValue } = __webpack_require__(1561)
const { rechercherPoint } = __webpack_require__(1562)
const xml2js = __webpack_require__(1519)
* @param {string} url
* @param {string} apiAuthKey
* @param {string} appLogin
* @param {string} name
* @param {string} address
* @param {string} postalCode
* @param {string} inseeCode
* @return {Promise<string | null>} User Pdl
name,
address,
postalCode,
inseeCode,
escalierEtEtageEtAppartement = ''
log('info', 'Fetching user pdl')
const sgeHeaders = {
'Content-Type': 'text/xml;charset=UTF-8',
apikey: apiAuthKey,
}
const { response } = await soapRequest({
xml: rechercherPoint(
appLogin,
name,
postalCode,
inseeCode,
address,
escalierEtEtageEtAppartement
),
})
const parsedReply = await xml2js.parseStringPromise(response.body, {
tagNameProcessors: [parseTags],
valueProcessors: [parseValue],
explicitArray: false,
})
try {
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
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { log, errors } = __webpack_require__(1)
const { findUserPdl } = __webpack_require__(1607)
const { getInseeCode } = __webpack_require__(1609)
const { findUserAddress } = __webpack_require__(1610)
const {
removeMultipleSpaces,
removeAddressnumber,
* Verify user identity
* @param {object} fields
* @param {string} baseUrl
* @param {string} loginUtilisateur
* @param {boolean} isAlternateStart
* @returns {Promise<User>}
async function verifyUserIdentity(
fields,
baseUrl,
apiAuthKey,
loginUtilisateur,
isAlternateStart = false,
inseeCode = ''
// If first start get InseeCode
log('debug', 'verifyUserIdentity')
if (!isAlternateStart) {
inseeCode = await getInseeCode(fields.postalCode, fields.city)
}
// Store if user is going through safety sge onboarding
let userSafetyOnBoarding = false
// First try with user adresse
let pdl = await findUserPdl(
`${baseUrl}/enedis_SDE_recherche-point/1.0`,
apiAuthKey,
loginUtilisateur,
fields.lastname,
fields.address,
fields.postalCode,
inseeCode
)
228694
228695
228696
228697
228698
228699
228700
228701
228702
228703
228704
228705
228706
228707
228708
228709
228710
228711
228712
228713
228714
228715
228716
228717
228718
228719
228720
228721
228722
228723
228724
228725
228726
228727
228728
228729
228730
228731
228732
228733
228734
228735
228736
228737
228738
228739
228740
228741
228742
228743
228744
228745
228746
228747
228748
228749
if (!pdl) {
log('warn', 'Second chance for sge onboarding')
// Set safety onboarding in order to save it inside BO
userSafetyOnBoarding = true
// Backup verification
const userAddress = await findUserAddress(
baseUrl,
apiAuthKey,
loginUtilisateur,
fields.pointId
)
const escalierEtEtageEtAppartement = userAddress.escalierEtEtageEtAppartement
? removeMultipleSpaces(userAddress.escalierEtEtageEtAppartement)
: ''
pdl = await findUserPdl(
`${baseUrl}/enedis_SDE_recherche-point/1.0`,
apiAuthKey,
loginUtilisateur,
fields.lastname,
removeMultipleSpaces(userAddress.numeroEtNomVoie),
userAddress.codePostal,
userAddress.commune.$.code,
escalierEtEtageEtAppartement
)
// Third try, remove address number because it's buggy on SGE side
if (!pdl) {
log('warn', 'Third chance onboarding for sge')
pdl = await findUserPdl(
`${baseUrl}/enedis_SDE_recherche-point/1.0`,
apiAuthKey,
loginUtilisateur,
fields.lastname,
removeMultipleSpaces(removeAddressnumber(userAddress.numeroEtNomVoie)),
userAddress.codePostal,
userAddress.commune.$.code
)
}
// Third try, remove address number and add escalierEtEtageEtAppartement because it's buggy on SGE side
if (!pdl) {
log('warn', 'Last chance onboarding for sge')
pdl = await findUserPdl(
`${baseUrl}/enedis_SDE_recherche-point/1.0`,
apiAuthKey,
loginUtilisateur,
fields.lastname,
removeMultipleSpaces(removeAddressnumber(userAddress.numeroEtNomVoie)),
userAddress.codePostal,
userAddress.commune.$.code,
escalierEtEtageEtAppartement
)
}
}
if (fields.pointId != pdl) {
log('error', 'PointId does not match')
if (isAlternateStart) {
throw errors.TERMS_VERSION_MISMATCH
} else {
throw errors.LOGIN_FAILED
}
return {
lastname: fields.lastname,
firstname: fields.firstname,
pointId: fields.pointId,
inseeCode,
postalCode: fields.postalCode,
address: fields.address,
hasBeenThroughtSafetyOnBoarding: userSafetyOnBoarding,
city: fields.city,
module.exports = { verifyUserIdentity }
/***/ }),
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { default: axios } = __webpack_require__(1564)
const { log, errors } = __webpack_require__(1)
const API_URL = 'https://apicarto.ign.fr/api/codes-postaux/communes'
/**
* Return inseeCode given a postalCode
* @param {string} postalCode
* @param {string} [city]
* @return {Promise<string>} inseeCode
*/
async function getInseeCode(postalCode, city) {
log('info', `Query getInseeCode for postalCode ${postalCode} / ${city}`)
const response = await axios.get(`${API_URL}/${postalCode}`)
if (response.data.length === 1) {
return response.data[0].codeCommune
} else {
if (!city) throw errors.USER_ACTION_NEEDED
const filteredResponse = response.data.filter(
town => town.nomCommune.toLowerCase() === city.toLowerCase()
)
return filteredResponse[0].codeCommune
}
`Query getInseeCode failed for postalCode ${postalCode} / ${city}`
module.exports = {
getInseeCode,
}
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { log, errors } = __webpack_require__(1)
const soapRequest = __webpack_require__(1337)
const {
parseTags,
parseValue,
parseUserAddress,
} = __webpack_require__(1561)
const xml2js = __webpack_require__(1519)
const { consulterDonneesTechniquesContractuelles } = __webpack_require__(1562)
228834
228835
228836
228837
228838
228839
228840
228841
228842
228843
228844
228845
228846
228847
228848
228849
228850
228851
228852
228853
228854
228855
228856
228857
228858
228859
228860
228861
228862
228863
228864
228865
228866
228867
228868
228869
228870
228871
228872
/**
* Get user contract start date
* @param {string} url
* @param {string} apiAuthKey
* @param {string} userLogin
* @param {number} pointId
* @returns {Promise<Address>}
*/
async function findUserAddress(url, apiAuthKey, userLogin, pointId) {
log('info', 'Fetching user address')
const sgeHeaders = {
'Content-Type': 'text/xml;charset=UTF-8',
apikey: apiAuthKey,
}
const { response } = await soapRequest({
url: `${url}/enedis_SGE_ConsultationDonneesTechniquesContractuelles/1.0`,
headers: sgeHeaders,
xml: consulterDonneesTechniquesContractuelles(pointId, userLogin, false),
}).catch(err => {
log('error', 'Error while fetching user : ' + err)
throw errors.VENDOR_DOWN
})
const result = await xml2js.parseStringPromise(response.body, {
tagNameProcessors: [parseTags],
valueProcessors: [parseValue],
explicitArray: false,
})
try {
return parseUserAddress(result)
} catch (error) {
log('error', 'Error while processing user address: ' + error)
log(
'error',
`Enedis issue ${result.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${result.Envelope.Body.Fault.faultstring}`
)
throw errors.LOGIN_FAILED
}
}
module.exports = { findUserAddress }
/***/ }),
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
const { log, updateOrCreate } = __webpack_require__(1)
const { isLocal } = __webpack_require__(1612)
const cozyClient = __webpack_require__(485)
async function saveAccountData(accountId, accountData) {
log('info', `saveAccountData: ${accountId}`)
let account = await getAccount(accountId)
log('info', `saveAccountData account: ${JSON.stringify(account)}`)
log(
'info',
`saveAccountData account: ${JSON.stringify({
...account,
data: accountData,
})}`
)
log(
'info',
`saveAccountData account after id: ${JSON.stringify({
...account,
data: accountData,
})}`
)
account = await updateOrCreate(
[{ ...account, data: accountData }],
'io.cozy.accounts',
['account_type']
log('info', `saveAccountData account reply: ${JSON.stringify(account)}`)
/**
* Return account
* @param {string} accountId
* @returns {Account}
*/
async function getAccount(accountId) {
log('info', `getAccount: ${accountId}`)
const accounts = await cozyClient.data.findAll('io.cozy.accounts')
log('info', `getAccount data: ${JSON.stringify(accounts)}`)
isLocal() ? account._id === accountId : account.account_type === accountId
async function getAccountForDelete(accountId, accountRev) {
log('info', `getAccountForDelete: ${accountId} ${accountRev}`)
const body = await cozyClient.fetchJSON(
'GET',
`/data/io.cozy.accounts/${accountId}?rev=${accountRev}`
)
log('debug', `getAccountForDelete: ${body}`)
return body
}
module.exports = { getAccount, saveAccountData, getAccountForDelete }
return (
process.env.NODE_ENV === 'development' ||
process.env.NODE_ENV === 'local' ||
process.env.NODE_ENV === 'standalone'
)
/**
* Verify if it's an alpha URL
* @returns {boolean}
*/
function isDev() {
return (
process.env.COZY_URL.includes('alpha') ||
process.env.COZY_URL.includes('cozy.tools')
)
}
module.exports = { isLocal, isDev }
228970
228971
228972
228973
228974
228975
228976
228977
228978
228979
228980
228981
228982
228983
228984
228985
228986
228987
228988
228989
228990
228991
228992
228993
228994
228995
228996
228997
228998
228999
229000
/***/ })
/******/ ]);
/************************************************************************/
/******/ // 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;
/******/ }
/******/