Просмотр исходного кода

implement api to create and return export file

= 5 лет назад
Родитель
Сommit
b2d7c393b6
1 измененных файлов с 24 добавлено и 4 удалено
  1. 24 4
      src/server/routes/apiv3/pages.js

+ 24 - 4
src/server/routes/apiv3/pages.js

@@ -90,14 +90,34 @@ module.exports = (crowi) => {
   *    /pages/export:
   *      get:
   *        tags: [Export]
-  *        description: get currently page file as md or pdf
+  *        description: create and return currently page file as md or pdf
   *        responses:
   *          200:
-  *            description: Return currently page file
+  *            description: Return currently page file path
   */
   router.get('/export', async(req, res) => {
-    // TODO use res.apiv3
-    return res.json({ ok: true });
+    const { exportService } = crowi;
+
+    try {
+      const {
+        revisionId, type, pageId,
+      } = req.query;
+      const exportFileName = `${pageId}`;
+      const markdown = await Page.getMarkdown(revisionId);
+
+      await exportService.cretaeMarkdownFile(markdown, exportFileName);
+
+      if (type === 'pdf') {
+        // TODO: convert markdown to pdf (GW-2757)
+      }
+
+      return res.apiv3({ exportFileName: `${exportFileName}.${type}` });
+    }
+    catch (err) {
+      res.code = 'unknown';
+      logger.error('Failed to get markdown', err);
+      return res.apiv3Err(err, 500);
+    }
   });
 
   return router;