mocksaml/pages/api/apps/metadata/download.ts

37 lines
1.1 KiB
TypeScript
Raw Normal View History

2022-02-17 06:57:50 +00:00
import type { NextApiRequest, NextApiResponse } from 'next';
2022-02-17 16:13:25 +00:00
import { createCertificate, createIdPMetadataXML, createIdPSSOUrl } from '../../../../utils';
2022-02-17 06:57:50 +00:00
import { IdPMetadata } from '../../../../types';
import stream from 'stream';
import { promisify } from 'util';
import config from '../../../../lib/env'
const pipeline = promisify(stream.pipeline);
export default async function handler(
req: NextApiRequest,
res: NextApiResponse<IdPMetadata | string>
) {
switch (req.method) {
case 'GET':
return await downloadMetadata();
default:
return res.status(405).end(`Method ${req.method} Not Allowed`);
}
// Download metadata for an app
async function downloadMetadata() {
const appId = '0480c44e-f200-4f72-8af0-a5a57611fd2d';
const xml = await createIdPMetadataXML({
idpEntityId: config.entityId,
2022-02-17 16:13:25 +00:00
idpSsoUrl: createIdPSSOUrl(appId),
2022-02-17 06:57:50 +00:00
certificate: await createCertificate(),
});
res.setHeader('Content-type', 'text/xml');
res.setHeader('Content-Disposition', 'attachment; filename=metadata.xml');
await pipeline(xml, res);
}
}