From abb720e904259b99edba2de01870a9bb3baa16cc Mon Sep 17 00:00:00 2001 From: Bastien DUMONT <bdumont@grandlyon.com> Date: Mon, 1 Aug 2022 15:39:06 +0200 Subject: [PATCH] feat(insee code): working function --- importedData.json | 1 + package.json | 1 + src/requests/insee.js | 28 ++++++++++++++++++++++++---- yarn.lock | 24 +++++++++++++++++++++++- 4 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 importedData.json diff --git a/importedData.json b/importedData.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/importedData.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/package.json b/package.json index 46eabf4..0f59c66 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "travisDeployKey": "./bin/generate_travis_deploy_key" }, "dependencies": { + "axios": "^0.27.2", "cozy-konnector-libs": "4.52.1", "easy-soap-request": "^4.7.0", "jest": "^28.1.3", diff --git a/src/requests/insee.js b/src/requests/insee.js index 87d823f..6aaeeef 100644 --- a/src/requests/insee.js +++ b/src/requests/insee.js @@ -1,15 +1,35 @@ // @ts-check +const { default: axios } = require('axios') const { log } = require('cozy-konnector-libs') +const API_URL = 'https://apicarto.ign.fr/api' + /** * Return inseeCode given a postalCode * @param {string} postalCode - * @return {Promise<string>} inseeCode + * @param {string} [city] + * @return {Promise<string | null>} inseeCode */ async function getInseeCode(postalCode, city) { - //TODO: Implement - log('info', `Query getInseeCode for postalCode ${postalCode} / ${city}`) - throw new Error('Function not implemented.') + try { + const response = await axios.get( + `${API_URL}/codes-postaux/communes/${postalCode}` + ) + log('info', `Query getInseeCode for postalCode ${postalCode} / ${city}`) + + if (response.data.length === 1) { + return response.data[0].codeCommune + } else { + if (!city) return null + + const filteredResponse = response.data.filter( + town => town.nomCommune.toLowerCase() === city.toLowerCase() + ) + return filteredResponse[0].codeCommune + } + } catch (error) { + return null + } } module.exports = { diff --git a/yarn.lock b/yarn.lock index 3e2ee11..b1fdef9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2356,6 +2356,14 @@ axios@^0.26.1: dependencies: follow-redirects "^1.14.8" +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + babel-eslint@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" @@ -2871,7 +2879,7 @@ colors@^1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -4314,11 +4322,25 @@ follow-redirects@^1.14.8: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== +follow-redirects@^1.14.9: + version "1.15.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" -- GitLab