| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- /**
- * importer
- */
- module.exports = function(crowi) {
- 'use strict';
- var debug = require('debug')('growi:lib:importer')
- , request = require('request')
- , esa = require('esa-nodejs')
- , esaClient = {}
- , qiita = require('./qiitaClient')
- , qiitaClient = {}
- , 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');
- }
- qiitaClient = qiita({
- team: config.crowi['importer:qiita:team_name'],
- accessToken: config.crowi['importer:qiita:access_token'],
- });
- debug('qiita client is initialized');
- /**
- * Get teams from esa (Promise wrapper)
- */
- function getTeamsFromEsa() {
- return new Promise(function(resolve, reject) {
- esaClient.api.team(function(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) {
- if (err) {
- debug(err);
- reject(err);
- }
- resolve(res);
- });
- });
- }
- /**
- * Import post data from esa to GROWI
- */
- importer.importAllPostsFromEsa = function(user) {
- /* Get posts from esa */
- return new Promise(function(resolve, reject) {
- getPostsFromEsa()
- .then(function(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('/')
- Page.findPage(pagePath, user, null, ignoreNotFound)
- .then(function(data) {
- if (data !== null) {
- reject('Page exists');
- }
- return Page.create(pagePath, post.body_md, user, { grant: Page.GRANT_PUBLIC, grantUserGroupId: null });
- })
- .then(function(createdPage) {
- if (!createdPage) {
- reject('Page exists');
- }
- debug('Crete page: ' + createdPage);
- resolve();
- })
- .catch(function(err) {
- debug(err);
- reject(err);
- })
- });
- })
- .catch(function(err) {
- debug(err);
- reject(err);
- });
- });
- }
- /**
- * Import post data from esa to GROWI
- */
- importer.testConnectionToEsa = function() {
- return new Promise(function(resolve, reject) {
- getTeamsFromEsa()
- .then(function(res) {
- resolve();
- })
- .catch(function(err) {
- debug(err);
- reject(err);
- });
- });
- }
- /**
- * Get posts from qiita (Promise wrapper)
- */
- function getPostsFromQiita() {
- return new Promise(function(resolve, reject) {
- qiitaClient.api.posts(function(err, res) {
- if (err) {
- debug(err);
- reject(err);
- }
- resolve(res);
- });
- });
- }
- /**
- * Import post data from qiita to GROWI
- */
- importer.importAllPostsFromQiita = function(user) {
- /* Get posts from qiita */
- return new Promise(function(resolve, reject) {
- getPostsFromQiita()
- .then(function(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('/')
- Page.findPage(pagePath, user, null, ignoreNotFound)
- .then(function(data) {
- if (data !== null) {
- reject('Page exists');
- }
- return Page.create(pagePath, post.body_md, user, { grant: Page.GRANT_PUBLIC, grantUserGroupId: null });
- })
- .then(function(createdPage) {
- if (!createdPage) {
- reject('Page exists');
- }
- debug('Crete page: ' + createdPage);
- resolve();
- })
- .catch(function(err) {
- debug(err);
- reject(err);
- })
- });
- })
- .catch(function(err) {
- debug(err);
- reject(err);
- });
- });
- }
- /**
- * Import post data from esa to GROWI
- */
- importer.testConnectionToQiita = function() {
- return new Promise(function(resolve, reject) {
- getTeamsFromQiita()
- .then(function(res) {
- resolve();
- })
- .catch(function(err) {
- debug(err);
- reject(err);
- });
- });
- }
- initialize();
- importer.esaClient = esaClient;
- importer.qiitaClient = qiitaClient;
- return importer;
- };
|