|
@@ -4,9 +4,8 @@
|
|
|
module.exports = crowi => {
|
|
module.exports = crowi => {
|
|
|
'use strict';
|
|
'use strict';
|
|
|
|
|
|
|
|
- const debug = require('debug')('growi:lib:importer');
|
|
|
|
|
|
|
+ const logger = require('@alias/logger')('growi:util:importer');
|
|
|
const esa = require('esa-nodejs');
|
|
const esa = require('esa-nodejs');
|
|
|
- const User = crowi.model('User');
|
|
|
|
|
const config = crowi.getConfig();
|
|
const config = crowi.getConfig();
|
|
|
const createGrowiPages = require('./createGrowiPagesFromImports')(crowi);
|
|
const createGrowiPages = require('./createGrowiPagesFromImports')(crowi);
|
|
|
let importer = {};
|
|
let importer = {};
|
|
@@ -20,33 +19,39 @@ module.exports = crowi => {
|
|
|
team: config.crowi['importer:esa:team_name'],
|
|
team: config.crowi['importer:esa:team_name'],
|
|
|
accessToken: config.crowi['importer:esa:access_token'],
|
|
accessToken: config.crowi['importer:esa:access_token'],
|
|
|
});
|
|
});
|
|
|
- debug('esa client is initialized');
|
|
|
|
|
|
|
+ logger.info('initialize esa importer');
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Import page data from esa to GROWI
|
|
* Import page data from esa to GROWI
|
|
|
*/
|
|
*/
|
|
|
- importer.importPagesFromEsa = user => {
|
|
|
|
|
- return new Promise(async(resolve, reject) => {
|
|
|
|
|
- const rawData = await getAllDataFromEsa();
|
|
|
|
|
- const data = convertEsaDataForGrowi(rawData, user);
|
|
|
|
|
- const result = await createGrowiPages(data, user);
|
|
|
|
|
|
|
+ importer.importDataFromEsa = user => {
|
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
|
+ const firstPage = 1;
|
|
|
|
|
+ const errors = importPostsFromEsa(firstPage, user, []);
|
|
|
|
|
|
|
|
- resolve(result);
|
|
|
|
|
|
|
+ resolve(errors);
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * Get posts from esa (Promise wrapper)
|
|
|
|
|
- */
|
|
|
|
|
- const getAllDataFromEsa = () => {
|
|
|
|
|
|
|
+ const importPostsFromEsa = (pageNum, user, errors) => {
|
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
|
- esaClient.api.posts((err, res) => {
|
|
|
|
|
|
|
+ esaClient.api.posts({page: pageNum, per_page: 100}, async(err, res) => {
|
|
|
|
|
+ const nextPage = res.body.next_page;
|
|
|
|
|
+ const postsReceived = res.body.posts;
|
|
|
|
|
+
|
|
|
if (err) {
|
|
if (err) {
|
|
|
- debug(err);
|
|
|
|
|
- return reject(err);
|
|
|
|
|
|
|
+ reject(`error in page ${pageNum}: ${err}`);
|
|
|
}
|
|
}
|
|
|
- resolve(res);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ const data = convertEsaDataForGrowi(postsReceived, user);
|
|
|
|
|
+ const newErrors = await createGrowiPages(data);
|
|
|
|
|
+
|
|
|
|
|
+ if (nextPage) {
|
|
|
|
|
+ return resolve(importPostsFromEsa(nextPage, user, errors.concat(newErrors)));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ resolve(errors.concat(newErrors));
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
@@ -54,9 +59,9 @@ module.exports = crowi => {
|
|
|
/**
|
|
/**
|
|
|
* Convert data into usable format for createGrowiPagesFromImports
|
|
* Convert data into usable format for createGrowiPagesFromImports
|
|
|
*/
|
|
*/
|
|
|
- const convertEsaDataForGrowi = (rawData, user) => {
|
|
|
|
|
|
|
+ const convertEsaDataForGrowi = (pages, user) => {
|
|
|
const basePage = '';
|
|
const basePage = '';
|
|
|
- const data = rawData.body.posts.map(post => {
|
|
|
|
|
|
|
+ const data = pages.map(post => {
|
|
|
const category = post.category;
|
|
const category = post.category;
|
|
|
const name = post.name;
|
|
const name = post.name;
|
|
|
let path = '';
|
|
let path = '';
|
|
@@ -91,7 +96,6 @@ module.exports = crowi => {
|
|
|
resolve();
|
|
resolve();
|
|
|
}
|
|
}
|
|
|
catch (err) {
|
|
catch (err) {
|
|
|
- debug(err);
|
|
|
|
|
reject(err);
|
|
reject(err);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -104,7 +108,6 @@ module.exports = crowi => {
|
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
|
esaClient.api.team((err, res) => {
|
|
esaClient.api.team((err, res) => {
|
|
|
if (err) {
|
|
if (err) {
|
|
|
- debug(err);
|
|
|
|
|
return reject(err);
|
|
return reject(err);
|
|
|
}
|
|
}
|
|
|
resolve(res);
|
|
resolve(res);
|