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

ES6 importer and call initialize after update config

sou 7 лет назад
Родитель
Сommit
f7cd7fca2a
3 измененных файлов с 59 добавлено и 62 удалено
  1. 1 0
      config/logger/config.dev.js
  2. 9 9
      lib/routes/admin.js
  3. 49 53
      lib/util/importer.js

+ 1 - 0
config/logger/config.dev.js

@@ -11,6 +11,7 @@ module.exports = {
   // 'growi:routes:login': 'debug',
   'growi:routes:login-passport': 'debug',
   'growi:service:PassportService': 'debug',
+  // 'growi:lib:importer': 'debug',
   // 'growi:routes:page': 'debug',
   // 'growi-plugin:*': 'debug',
   // 'growi:InterceptorManager': 'debug',

+ 9 - 9
lib/routes/admin.js

@@ -1202,16 +1202,16 @@ module.exports = function(crowi, app) {
    * @param {*} req
    * @param {*} res
    */
-  actions.api.importerSetting = function(req, res) {
+  actions.api.importerSetting = async(req, res) => {
     const form = req.form.settingForm;
 
-    if (req.form.isValid) {
-      debug('form content', form);
-      return saveSetting(req, res, form);
-    }
-    else {
+    if (!req.form.isValid) {
       return res.json({status: false, message: req.form.errors.join('\n')});
     }
+
+    debug('form content', form);
+    await saveSetting(req, res, form);
+    await importer.initialize();
   };
 
   /**
@@ -1221,7 +1221,7 @@ module.exports = function(crowi, app) {
    * @param {*} res
    */
   actions.api.importAllPostsFromEsa = function(req, res) {
-    var user = req.user;
+    const user = req.user;
     importer.importAllPostsFromEsa(user)
     .then(function() {
       return res.json({ status: true });
@@ -1229,7 +1229,7 @@ module.exports = function(crowi, app) {
     .catch(function(err) {
       return res.json({ status: false, message: `${err}` });
     });
-  }
+  };
 
   /**
    * Test connection to esa and response result with json
@@ -1245,7 +1245,7 @@ module.exports = function(crowi, app) {
     .catch(function(err) {
       return res.json({ status: false, message: `${err}` });
     });
-  }
+  };
 
   /**
    * save settings, update config cache, and response json

+ 49 - 53
lib/util/importer.js

@@ -1,54 +1,40 @@
 /**
  * importer
  */
-
-module.exports = function(crowi) {
+module.exports = crowi => {
   'use strict';
 
-  var debug = require('debug')('growi:lib:importer')
-    , request = require('request')
-    , esa = require('esa-nodejs')
-    , esaClient = {}
-    , Page = crowi.model('Page')
-    , User = crowi.model('User')
-    , pageRouter = require('../routes/page')(crowi)
-    , crowi = crowi
-    , config = crowi.getConfig()
-    , importer = {}
-    ;
-
-  /**
-   * Initialize importer
-   */
-  function initialize() {
-    esaClient = esa({
-      team:        config.crowi['importer:esa:team_name'],
-      accessToken: config.crowi['importer:esa:access_token'],
-    });
-    debug('esa client is initialized');
-  }
+  const debug = require('debug')('growi:lib:importer');
+  const request = require('request');
+  const esa = require('esa-nodejs');
+  const Page = crowi.model('Page');
+  const User = crowi.model('User');
+  const pageRouter = require('../routes/page')(crowi);
+  const config = crowi.getConfig();
+  let importer = {};
+  let esaClient = {};
 
   /**
    * Get teams from esa (Promise wrapper)
    */
-  function getTeamsFromEsa() {
-    return new Promise(function(resolve, reject) {
-      esaClient.api.team(function(err, res) {
+  const getTeamsFromEsa = () => {
+    return new Promise((resolve, reject) => {
+      esaClient.api.team((err, res) => {
         if (err) {
           debug(err);
           reject(err);
         }
         resolve(res);
-      })
+      });
     });
-  }
+  };
 
   /**
    * Get posts from esa (Promise wrapper)
    */
-  function getPostsFromEsa() {
-    return new Promise(function(resolve, reject) {
-      esaClient.api.posts(function(err, res) {
+  const getPostsFromEsa = () => {
+    return new Promise((resolve, reject) => {
+      esaClient.api.posts((err, res) => {
         if (err) {
           debug(err);
           reject(err);
@@ -56,66 +42,76 @@ module.exports = function(crowi) {
         resolve(res);
       });
     });
-  }
+  };
+
+  /**
+   * Initialize importer
+   */
+  importer.initialize = () => {
+    esaClient = esa({
+      team:        config.crowi['importer:esa:team_name'],
+      accessToken: config.crowi['importer:esa:access_token'],
+    });
+    debug('esa client is initialized');
+  };
 
   /**
    * Import post data from esa to GROWI
    */
-  importer.importAllPostsFromEsa = function(user) {
+  importer.importAllPostsFromEsa = user => {
     /* Get posts from esa */
-    return new Promise(function(resolve, reject) {
+    return new Promise((resolve, reject) => {
       getPostsFromEsa()
-      .then(function(res) {
+      .then(res => {
         /* Import to GROWI */
-        var basePage = '/';
-        var ignoreNotFound = true;
-        res.body.posts.forEach(function(post) {
-          var pagePath = basePage + [post.category, post.name].filter(v => v).join('/')
+        const basePage = '/';
+        const ignoreNotFound = true;
+        res.body.posts.forEach(post => {
+          const pagePath = basePage + [post.category, post.name].filter(v => v).join('/');
           Page.findPage(pagePath, user, null, ignoreNotFound)
-          .then(function(data) {
+          .then(data => {
             if (data !== null) {
               reject('Page exists');
             }
             return Page.create(pagePath, post.body_md, user, { grant: Page.GRANT_PUBLIC, grantUserGroupId: null });
           })
-          .then(function(createdPage) {
+          .then(createdPage => {
             if (!createdPage) {
               reject('Page exists');
             }
             debug('Crete page: ' + createdPage);
             resolve();
           })
-          .catch(function(err) {
+          .catch(err => {
             debug(err);
             reject(err);
-          })
+          });
         });
       })
-      .catch(function(err) {
+      .catch(err => {
         debug(err);
         reject(err);
       });
     });
-  }
+  };
 
   /**
    * Import post data from esa to GROWI
    */
-  importer.testConnectionToEsa = function() {
-    return new Promise(function(resolve, reject) {
+  importer.testConnectionToEsa = () => {
+    return new Promise((resolve, reject) => {
       getTeamsFromEsa()
-      .then(function(res) {
+      .then(res => {
         resolve();
       })
-      .catch(function(err) {
+      .catch(err => {
         debug(err);
         reject(err);
       });
     });
-  }
+  };
 
-  initialize();
-  importer.esaClient = esaClient;
+  importer.initialize();
 
   return importer;
 };