sou 7 лет назад
Родитель
Сommit
9c97c73f4b
2 измененных файлов с 19 добавлено и 16 удалено
  1. 1 1
      lib/routes/admin.js
  2. 18 15
      lib/util/importer.js

+ 1 - 1
lib/routes/admin.js

@@ -1221,7 +1221,7 @@ module.exports = function(crowi, app) {
    */
   actions.api.importDataFromEsa = async(req, res) => {
     const user = req.user;
-    const result = await importer.importPagesFromEsa(user);
+    const result = await importer.importDataFromEsa(user);
 
     if (result.errors) {
       return res.json({ status: false, message: `<br> - ${result.errors.join('<br> - ')}` });

+ 18 - 15
lib/util/importer.js

@@ -4,7 +4,7 @@
 module.exports = crowi => {
   'use strict';
 
-  const debug = require('debug')('growi:lib:importer');
+  const logger = require('@alias/logger')('growi:util:importer');
   const esa = require('esa-nodejs');
   const User = crowi.model('User');
   const config = crowi.getConfig();
@@ -20,15 +20,15 @@ module.exports = crowi => {
       team:        config.crowi['importer:esa:team_name'],
       accessToken: config.crowi['importer:esa:access_token'],
     });
-    debug('esa client is initialized');
+    logger.info('initialize esa importer');
   };
 
   /**
    * Import page data from esa to GROWI
    */
-  importer.importPagesFromEsa = user => {
+  importer.importDataFromEsa = user => {
     return new Promise(async(resolve, reject) => {
-      const rawData = await getAllDataFromEsa();
+      const rawData = await getAllPostsFromEsa([], 1);
       const data = convertEsaDataForGrowi(rawData, user);
       const result = await createGrowiPages(data, user);
 
@@ -36,17 +36,22 @@ module.exports = crowi => {
     });
   };
 
-  /**
-   * Get posts from esa (Promise wrapper)
-   */
-  const getAllDataFromEsa = () => {
+  const getAllPostsFromEsa = (pagesSoFar, pageNum) => {
     return new Promise((resolve, reject) => {
-      esaClient.api.posts((err, res) => {
+      esaClient.api.posts({page: pageNum, per_page: 100}, (err, res) => {
+        const nextPage = res.body.next_page;
+        const postsReceived = res.body.posts;
+
         if (err) {
-          debug(err);
-          return reject(err);
+          reject(`error in page ${pageNum}: ${err}`);
+        }
+
+        if (nextPage) {
+          return resolve(getAllPostsFromEsa(pagesSoFar.concat(postsReceived), nextPage));
+        }
+        else {
+          return resolve(pagesSoFar.concat(postsReceived));
         }
-        resolve(res);
       });
     });
   };
@@ -56,7 +61,7 @@ module.exports = crowi => {
    */
   const convertEsaDataForGrowi = (rawData, user) => {
     const basePage = '';
-    const data = rawData.body.posts.map(post => {
+    const data = rawData.map(post => {
       const category = post.category;
       const name = post.name;
       let path = '';
@@ -91,7 +96,6 @@ module.exports = crowi => {
         resolve();
       }
       catch (err) {
-        debug(err);
         reject(err);
       }
     });
@@ -104,7 +108,6 @@ module.exports = crowi => {
     return new Promise((resolve, reject) => {
       esaClient.api.team((err, res) => {
         if (err) {
-          debug(err);
           return reject(err);
         }
         resolve(res);