|
|
@@ -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);
|