From f19a256153fe2ed5549d3a8b8b699c589534b841 Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 27 Jan 2025 02:31:08 +0100 Subject: [PATCH] chore: added api mocking --- .gitignore | 6 ++++ api-mock/fetchEndpoints.js | 33 +++++++++++++++++++ api-mock/index.js | 28 ++++++++++++++++ api-mock/package.json | 18 +++++++++++ package.json | 4 ++- src/App.vue | 17 +++++----- src/stores/api.store.ts | 66 ++++++++++++++++++++++++++++++++++++++ src/stores/global.store.ts | 39 ++-------------------- src/utils/http.ts | 8 ----- 9 files changed, 164 insertions(+), 55 deletions(-) create mode 100644 api-mock/fetchEndpoints.js create mode 100644 api-mock/index.js create mode 100644 api-mock/package.json create mode 100644 src/stores/api.store.ts delete mode 100644 src/utils/http.ts diff --git a/.gitignore b/.gitignore index a547bf3..73daf68 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,8 @@ node_modules dist dist-ssr *.local +.env +.env.* # Editor directories and files .vscode/* @@ -22,3 +24,7 @@ dist-ssr *.njsproj *.sln *.sw? + +# api-mock +/api-mock/endpoints/ +/api-mock/*.lock \ No newline at end of file diff --git a/api-mock/fetchEndpoints.js b/api-mock/fetchEndpoints.js new file mode 100644 index 0000000..bc2cdf8 --- /dev/null +++ b/api-mock/fetchEndpoints.js @@ -0,0 +1,33 @@ +import { existsSync } from 'fs'; +import { mkdir, writeFile } from 'fs/promises'; + +async function fetchJSONEndpointData(url, fileName) { + try { + const res = await fetch(url); + const data = await res.json(); + await writeFile(`./endpoints/${fileName}`, JSON.stringify(data)); + + return true; + } catch (error) { + console.error(error); + } + + return false; +} + +async function main() { + if (!existsSync('endpoints')) await mkdir('endpoints'); + + Promise.all( + ['getActiveData', 'getDonators', 'getSceneries', 'getVehicles'].map((endpointName) => + fetchJSONEndpointData( + `https://stacjownik.spythere.eu/api/${endpointName}`, + `${endpointName}.json` + ) + ) + ).then(() => { + console.log('Endpoints downloaded!'); + }); +} + +main(); diff --git a/api-mock/index.js b/api-mock/index.js new file mode 100644 index 0000000..167ff96 --- /dev/null +++ b/api-mock/index.js @@ -0,0 +1,28 @@ +import express from 'express'; +import path from 'path'; +import { cwd } from 'process'; +import cors from 'cors'; + +const app = express(); + +app.use(cors()); + +app.get('/api/getActiveData', (_, res) => { + res.sendFile(path.join(cwd(), 'endpoints', 'getActiveData.json')); +}); + +app.get('/api/getSceneries', (_, res) => { + res.sendFile(path.join(cwd(), 'endpoints', 'getSceneries.json')); +}); + +app.get('/api/getVehicles', (_, res) => { + res.sendFile(path.join(cwd(), 'endpoints', 'getVehicles.json')); +}); + +app.get('/api/getDonators', (_, res) => { + res.sendFile(path.join(cwd(), 'endpoints', 'getDonators.json')); +}); + +app.listen(3123, () => { + console.log('Mocking API server...'); +}); diff --git a/api-mock/package.json b/api-mock/package.json new file mode 100644 index 0000000..3b0b3c1 --- /dev/null +++ b/api-mock/package.json @@ -0,0 +1,18 @@ +{ + "name": "api-mock", + "version": "1.0.0", + "description": "", + "type": "module", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node index.js", + "fetch": "node fetchEndpoints.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "cors": "^2.8.5", + "express": "^4.18.3" + } +} diff --git a/package.json b/package.json index 4331472..55260a4 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,9 @@ "version": "0.1.1", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --mode staging", + "dev:mock": "vite --mode development & yarn --cwd ./api-mock start", + "mock:setup": "cd ./api-mock && yarn && yarn fetch", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, diff --git a/src/App.vue b/src/App.vue index 0f0bbea..2296bc0 100644 --- a/src/App.vue +++ b/src/App.vue @@ -238,13 +238,13 @@