diff --git a/index.js b/index.js index dfbfbc5..42d6503 100644 --- a/index.js +++ b/index.js @@ -1,25 +1,29 @@ -const express = require('express'); -const app = express(); -const PORT = 3000; +const express = require('express') +const cors = require('cors') -const fs = require('fs'); -const path = require('path'); -const GeoJsonGeometriesLookup = require("geojson-geometries-lookup"); +const app = express() +app.use(cors()) -const lookupTable = require('./rep-lookup'); +const PORT = 3000 -app.use(express.static(path.join(__dirname, 'public'))); +const fs = require('fs') +const path = require('path') +const GeoJsonGeometriesLookup = require("geojson-geometries-lookup") + +const lookupTable = require('./rep-lookup') + +app.use(express.static(path.join(__dirname, 'public'))) app.use('/rep', async (req, res) => { - const lat = parseFloat(req.query.lat); - const lon = parseFloat(req.query.lon); + const lat = parseFloat(req.query.lat) + const lon = parseFloat(req.query.lon) if (!lat || !lon) return - const f = fs.readFileSync(path.join(__dirname, 'public/circonscriptions-legislatives.json'), 'utf-8'); + const f = fs.readFileSync(path.join(__dirname, 'public/circonscriptions-legislatives.json'), 'utf-8') const data = JSON.parse(f) - gl = new GeoJsonGeometriesLookup(data); + gl = new GeoJsonGeometriesLookup(data) const pos = { type: "Point", @@ -28,9 +32,16 @@ app.use('/rep', async (req, res) => { const code = gl.getContainers(pos).features[0]?.properties["REF"] - const repFile = fs.readFileSync(path.join(__dirname, `public/reps/${lookupTable[code]}.json`), 'utf-8'); + if (!code) { + res.json({ + "message": "The requested data couldn't be found. Maybe it was moved or the data isn't generated properly." + }).status(404).end(); + return + } - res.end(repFile); + const repFile = fs.readFileSync(path.join(__dirname, `public/reps/${lookupTable[code]}.json`), 'utf-8') + + res.end(repFile) /** * GENERATE INITIAL DATA @@ -40,10 +51,10 @@ app.use('/rep', async (req, res) => { // const output = {} // for (let i = 500; i < lookupTable.length; i++) { - // const repId = lookupTable[i]; + // const repId = lookupTable[i] // console.log(repId) - // const response = await fetch(`https://www.assemblee-nationale.fr/dyn/deputes/${repId}`); + // const response = await fetch(`https://www.assemblee-nationale.fr/dyn/deputes/${repId}`) // const body = await response.text() // const depRegex = new RegExp(/(data-content=\"\/dyn\/carte\/departement\/)([A-Za-z0-9]{2,})/g) @@ -69,7 +80,7 @@ app.use('/rep', async (req, res) => { // output[`${rep.departement}-${rep.circo}`] = repId // } - // res.json(output); + // res.json(output) }) app.listen(PORT, () => console.log(`Server listening on port: ${PORT}`)); diff --git a/package-lock.json b/package-lock.json index c0048ae..b4c29de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,6 +6,7 @@ "": { "license": "ISC", "dependencies": { + "cors": "^2.8.5", "express": "^4.18.2", "geojson-geometries-lookup": "^0.5.0" } @@ -183,6 +184,18 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -473,6 +486,14 @@ "node": ">= 0.6" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", diff --git a/package.json b/package.json index f5cdec9..6481303 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "author": "", "license": "ISC", "dependencies": { + "cors": "^2.8.5", "express": "^4.18.2", "geojson-geometries-lookup": "^0.5.0" },