refactor(project): Renamed all instances of dafa to msfa or mina-sidor-fa. (TV-379)
Squashed commit of the following: commit d3f52ff6876f6e246c7d3c188e56cc2370289341 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Aug 17 14:10:38 2021 +0200 Renamed all dafa instances to msfa
This commit is contained in:
140
mock-api/mina-sidor-fa/server.js
Normal file
140
mock-api/mina-sidor-fa/server.js
Normal file
@@ -0,0 +1,140 @@
|
||||
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*onlyEmployeesWithoutAuthorization=*': '/employee$1authorizations.length_gte=1',
|
||||
'/employee*': '/employees$1',
|
||||
'/participants': '/participants?_embed=employees',
|
||||
'/participant/:id': '/participants/:id?_embed=employees',
|
||||
'/auth/userinfo': '/currentUser',
|
||||
'/auth/organizations': '/currentUser',
|
||||
'/avrop/tjanster*': '/tjanster$1',
|
||||
'/avrop/utforandeverksamheter*': '/organizations$1',
|
||||
'/avrop/kommuner*': '/kommuner$1',
|
||||
'/deltagare': '/avrop',
|
||||
'/deltagare/:sokandeId/avrop': '/avrop?sokandeId=:sokandeId',
|
||||
'/deltagare/:sokandeId/*': '/deltagare/:sokandeId',
|
||||
'*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 method = req.originalMethod;
|
||||
const parsedUrl = method === 'GET' ? req._parsedOriginalUrl : req._parsedUrl;
|
||||
const pathname = parsedUrl.pathname;
|
||||
const params = parsedUrl.query ? new URLSearchParams(parsedUrl.query) : null;
|
||||
const requestHeaders = req.headers;
|
||||
|
||||
// all paths except /auth/token requires Authorization header.
|
||||
if (!pathname.includes('/auth/token') && !requestHeaders.authorization) {
|
||||
return res.status(401).jsonp({ error: 'No valid access-token' });
|
||||
}
|
||||
|
||||
// Return custom error when status is 404.
|
||||
if (res.statusCode === 404) {
|
||||
return res.status(404).jsonp({ error: `Can't find path: ${pathname}` });
|
||||
}
|
||||
|
||||
// Add createdAt to the body
|
||||
if (method === 'POST') {
|
||||
req.body.createdAt = Date.now();
|
||||
}
|
||||
|
||||
let data = res.locals.data;
|
||||
const deltagareRegex = /(?:\/deltagare\/)(?:\d\/)(contact|driverlicense|educationlevels\/highest|educations|translator|work\/disabilities|work\/languages|work\/experiences)/g;
|
||||
const isDeltagarePath = deltagareRegex.exec(pathname);
|
||||
const avropRegex = /(?:\/avrop\/(?:tjanster|utforandeverksamheter|kommuner|\d))|(?:\/deltagare\/\d\/(avrop))/g;
|
||||
const isAvropPath = avropRegex.exec(pathname);
|
||||
const authRegex = /(?:\/auth\/)(userinfo|organizations)/g;
|
||||
const isAuthPath = authRegex.exec(pathname);
|
||||
|
||||
if (isAuthPath) {
|
||||
const authSubPath = isAuthPath[1];
|
||||
|
||||
if (authSubPath === 'organizations') {
|
||||
data = res.locals.data[authSubPath].map(organization => ({
|
||||
name: organization.name,
|
||||
organizationnumber: organization.organizationNumber,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
if (isDeltagarePath) {
|
||||
const deltagareSubPath = getDeltagareSubPath(isDeltagarePath[1]);
|
||||
data = res.locals.data[deltagareSubPath] || {};
|
||||
}
|
||||
if (isAvropPath) {
|
||||
if (params) {
|
||||
const newData = [];
|
||||
params.forEach((value, key) => {
|
||||
if (key === 'kommunCodes') {
|
||||
value = +value;
|
||||
}
|
||||
|
||||
newData.push(...data.filter(item => item[`related_${key}`].includes(value)));
|
||||
});
|
||||
|
||||
data = newData.filter((value, index, arr) => arr.findIndex(item => item.code === value.code) === index);
|
||||
} else if (isAvropPath[1]) {
|
||||
data = data[0];
|
||||
}
|
||||
}
|
||||
|
||||
res.jsonp({
|
||||
data,
|
||||
...appendMetaData(params, res),
|
||||
});
|
||||
};
|
||||
|
||||
server.use(router);
|
||||
server.listen(8000, () => {
|
||||
console.info('JSON Server is running');
|
||||
});
|
||||
|
||||
function appendMetaData(params, res) {
|
||||
if (params && 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 'educationlevels/highest':
|
||||
return 'highestEducation';
|
||||
case 'work/disabilities':
|
||||
return 'disabilities';
|
||||
case 'work/languages':
|
||||
return 'workLanguages';
|
||||
case 'work/experiences':
|
||||
return 'workExperiences';
|
||||
default:
|
||||
return path;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user