async function configure()

in components/vam-api/packages/vam-api/lib/controllers/appstream-images-controller.js [18:113]


async function configure(context) {
  const router = context.router();
  const wrap = context.wrap;

  // ===============================================================
  //  GET / (mounted to /api/appstream-images)
  // ===============================================================
  router.get(
    '/',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const list = await appstreamService.listImages(requestContext);
      res.status(200).json(list);
    }),
  );

  router.post(
    '/:imageName/share',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const imageName = req.params.imageName;
      const { accountId } = req.body;
      const result = await appstreamService.shareImage(requestContext, {
        imageName,
        accountId,
      });
      res.status(200).json(result);
    }),
  );

  router.delete(
    '/:imageName/share',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const imageName = req.params.imageName;
      const { accountId } = req.body;
      const result = await appstreamService.revokeImageSharing(requestContext, {
        imageName,
        accountId,
      });
      res.status(200).json(result);
    }),
  );

  router.post(
    '/create',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const {
        imageName,
        applications,
        dapEnabled,
        imageBuilderID,
        snapshotImage,
        deleteImageBuilder,
        instanceType,
        appstreamImageArn,
      } = req.body;
      const result = await appstreamService.createImage(requestContext, {
        imageName,
        applications,
        dapEnabled,
        imageBuilderID,
        snapshotImage,
        deleteImageBuilder,
        instanceType,
        appstreamImageArn,
      });
      res.status(200).json(result);
    }),
  );

  router.delete(
    '/:imageName',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const imageName = req.params.imageName;
      const result = await appstreamService.deleteImage(requestContext, {
        imageName,
      });
      res.status(200).json(result);
    }),
  );

  return router;
}