Files
mina-sidor-fa-web/mock-api/dafa-web/server.js
Erik Tiekstra c4ffb2aeb3 feat(deltagare): Added deltagare data and models (TV-268)
Squashed commit of the following:

commit 8b61e3edeb644d7a27d322a569e85a7f76667243
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Fri Jul 2 14:26:13 2021 +0200

    Removed comments

commit 40dd5f0c186ab4b7b239c054d468f33bd550e0a4
Merge: 3a51568 a11d166
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Fri Jul 2 13:00:59 2021 +0200

    Merge branch 'develop' into feature/TV-268-deltagare-data

commit 3a515683513e8152507a744489d79dc62efbc64c
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Fri Jul 2 12:53:03 2021 +0200

    Removed wrong data-structure from deltagare-card component

commit 2b2da9fb6b25c980bacfe3f37201f569c05fce8c
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Fri Jul 2 12:19:37 2021 +0200

    Added more mock-data to deltagare api

commit 8c52ba5a3a259eb0a4c084eb516180a333bafb45
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Fri Jul 2 11:01:47 2021 +0200

    Added highestEducation to mock-api and fixed dynamic mock-api paths

commit a6b372bf05900698dc592ca15853def26cebe841
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Fri Jul 2 08:33:06 2021 +0200

    Added fallbackvalues for deltagare

commit 6bbad6826620fc4d95877884fefbb0951216fab0
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Jul 1 16:05:05 2021 +0200

    WIP adding mock-data

commit b20e3b057ac50c7f929e8eeaff3a06c5372280a9
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Jul 1 10:30:32 2021 +0200

    Added some data to deltagarekort

commit ac15170c089be760bd72a470e9f83603dedba945
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Jul 1 09:40:56 2021 +0200

    Added deltagare page and components. Also mapped drivers-licenses

commit 80785b31453553ce78e75b8a76a9ca2758870a0e
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Wed Jun 30 15:52:28 2021 +0200

    Added mapping

commit 1b15d0d621b2bb0b3d44d695df12f68637205223
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Wed Jun 30 15:20:53 2021 +0200

    Added deltagareCompact in service

commit 20f7de869d0343a5af59acb83964eea224bcf926
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Wed Jun 30 14:57:59 2021 +0200

    Added deltagare models and started with service
2021-07-02 14:32:37 +02:00

97 lines
2.6 KiB
JavaScript

import jsonServer from 'json-server';
const server = jsonServer.create();
const router = jsonServer.router('api.json');
const middlewares = jsonServer.defaults();
server.use(middlewares);
server.use(
jsonServer.rewriter({
'/api/*': '/$1',
'*sort=services*': '$1sort=services[0].name$2',
'*sort=organizations*': '$1sort=organizations[0].address.city$2',
'/employee*search=*': '/employee$1fullName_like=$2',
'/employee*': '/employees$1',
'/participants': '/participants?_embed=employees',
'/participant/:id': '/participants/:id?_embed=employees',
'/auth': '/currentUser',
'/customerinfo/*/*': '/deltagare/$2',
'/customerinfo': '/deltagare',
'*page=*': '$1_page=$2',
'*limit=*': '$1_limit=$2',
'*sort=*': '$1_sort=$2',
'*order=*': '$1_order=$2',
'/auth/token?accessCode=auth_code_from_CIAM_with_all_permissions': '/getTokenFullAccess',
})
);
router.render = (req, res) => {
const pathname = req._parsedOriginalUrl.pathname;
// all paths except /auth/token requires Authorization header.
if (!pathname.includes('/auth/token') && !req.headers.authorization) {
return res.status(401).jsonp({ error: 'No valid access-token' });
}
const params = new URLSearchParams(req._parsedUrl.query);
// Add createdAt to the body
if (req.originalMethod === 'POST') {
req.body.createdAt = Date.now();
}
if (pathname.includes('/auth/token')) {
res.jsonp(res.locals.data);
} else {
let data = res.locals.data;
const deltagareRegex = /(?:\/customerinfo\/)(contact|driverlicense|education\/highest|education|translator|work\/disability|work\/languages)/g;
const isDeltagarePath = deltagareRegex.exec(pathname);
if (isDeltagarePath) {
const deltagareSubPath = getDeltagareSubPath(isDeltagarePath[1]);
data = res.locals.data[deltagareSubPath] || {};
}
res.jsonp({
data,
...appendMetaData(params, res),
});
}
};
server.use(router);
server.listen(8000, () => {
console.info('JSON Server is running');
});
function appendMetaData(params, res) {
if (params.has('_page')) {
const limit = +params.get('_limit');
const page = +params.get('_page');
const count = res.get('X-Total-Count');
const totalPages = Math.ceil(count / limit);
return {
meta: {
count,
limit,
page,
totalPages,
},
};
}
return null;
}
function getDeltagareSubPath(path) {
switch (path) {
case 'education/highest':
return 'highestEducation';
case 'work/disability':
return 'disabilities';
case 'work/languages':
return 'workLanguages';
default:
return path;
}
}