server/routes/products.ts (42 lines of code) (raw):
import type { Request, Response } from 'express';
import { Router } from 'express';
import type { ProductType } from '../../shared/productTypes';
import { PRODUCT_TYPES } from '../../shared/productTypes';
import { membersDataApiHandler } from '../apiProxy';
const routeProvider = (apiPathPrefix: string) => {
const router = Router();
Object.values(PRODUCT_TYPES).forEach((productType: ProductType) => {
router.use('/banner/' + productType.urlPart, (_, res: Response) => {
res.redirect('/payment/' + productType.urlPart + '?INTCMP=BANNER');
});
if (productType.legacyUrlPart) {
router.use(
`*/${productType.legacyUrlPart}*`,
(req: Request, res: Response) => {
res.redirect(
req.originalUrl.replace(
`/${productType.legacyUrlPart}`,
`/${productType.urlPart}`,
),
);
},
);
}
if (productType.updateAmountMdaEndpoint) {
router.post(
`${apiPathPrefix}update/amount/` +
productType.urlPart +
'/:subscriptionName',
membersDataApiHandler(
'user-attributes/me/' +
productType.updateAmountMdaEndpoint +
'/:subscriptionName',
'MDA_UPDATE_CONTRIBUTIONS_AMOUNT',
['subscriptionName'],
),
);
}
});
return router;
};
export { routeProvider };