in apps/newsletters-api/src/app/routes/newsletters.ts [24:84]
export function registerReadNewsletterRoutes(app: FastifyInstance) {
// not using the makeSuccess function on this route as
// we are emulating the response of the legacy API
app.get('/api/legacy/newsletters', async (req, res) => {
const storageResponse = await newsletterStore.list();
if (!storageResponse.ok) {
return res
.status(mapStorageFailureReasonToStatusCode(storageResponse.reason))
.send(makeErrorResponse(storageResponse.message));
}
return storageResponse.data.map(transformDataToLegacyNewsletter);
});
interface IQuerystring {
signImages: boolean;
}
app.get<{ Querystring: IQuerystring }>(
'/api/newsletters',
async (req, res) => {
const storageResponse = await newsletterStore.list();
if (!storageResponse.ok) {
return res
.status(mapStorageFailureReasonToStatusCode(storageResponse.reason))
.send(makeErrorResponse(storageResponse.message));
}
const { signImages } = req.query;
if (isDynamicImageSigningEnabled() && signImages) {
const newsletterDataWithSignedImages = await Promise.all(
storageResponse.data.map(signTemplateImages),
);
return makeSuccessResponse(newsletterDataWithSignedImages);
}
return makeSuccessResponse(storageResponse.data);
},
);
app.get<{
Params: { newsletterId: string };
Querystring: IQuerystring;
}>('/api/newsletters/:newsletterId', async (req, res) => {
const { newsletterId } = req.params;
const storageResponse = await newsletterStore.readByName(newsletterId);
if (!storageResponse.ok) {
return res
.status(mapStorageFailureReasonToStatusCode(storageResponse.reason))
.send(makeErrorResponse(storageResponse.message));
}
const { signImages } = req.query;
if (isDynamicImageSigningEnabled() && signImages) {
const newsletterDataWithSignedImages = await signTemplateImages(
storageResponse.data,
);
return makeSuccessResponse(newsletterDataWithSignedImages);
}
return makeSuccessResponse(storageResponse.data);
});
}