Ver Fonte

add per_page

yusuketk há 7 anos atrás
pai
commit
7874c904c7
2 ficheiros alterados com 22 adições e 13 exclusões
  1. 12 6
      lib/util/importer.js
  2. 10 7
      lib/util/restQiitaAPI.js

+ 12 - 6
lib/util/importer.js

@@ -77,21 +77,27 @@ module.exports = crowi => {
 
   const importPostsFromQiita = (pageNum, user, errors) => {
     return new Promise((resolve, reject) => {
-      qiitaClient.getQiitaPages()
+      qiitaClient.getQiitaPages(pageNum)
       .then(function(res) {
-        const postsReceived = res;
+        const nextPage = pageNum + 1;
+        const postsReceived = res[0];
+        const pageTotal = res[1];
         const data = convertQiitaDataForGrowi(postsReceived, user);
+
         createGrowiPages(data)
         .then(function(newErrors) {
-          errors.concat(newErrors);
-        });
+          if (nextPage <= pageTotal) {
+            return resolve(importPostsFromQiita(nextPage, user, errors.concat(newErrors)));
+          }
 
-        resolve(errors);
+          resolve(errors.concat(newErrors));
+        });
       }).catch(function(err) {
         reject(err);
       });
     });
   };
+
   /**
    * Convert data into usable format for createGrowiPagesFromImports
    */
@@ -163,7 +169,7 @@ module.exports = crowi => {
   importer.testConnectionToQiita = () => {
     return new Promise(async(resolve, reject) => {
       try {
-        const test = await qiitaClient.getQiitaUser();
+        await qiitaClient.getQiitaUser();
         resolve();
       }
       catch (err) {

+ 10 - 7
lib/util/restQiitaAPI.js

@@ -22,8 +22,9 @@ module.exports = function(Team, Token) {
     return new Promise((resolve, reject) => {
       options.path = `/api/v2/${path}`;
       const req = https.request(options, (res) => {
+        const total = res.headers['total-count'];
         res.on('data', (chunk) => {
-            resolve(chunk);
+          resolve([chunk, total]);
         });
       });
 
@@ -38,7 +39,7 @@ module.exports = function(Team, Token) {
   restQiitaAPI.getQiitaUser = function() {
     return new Promise((resolve, reject) => {
       restAPI('users', options)
-      .then(function(buf){
+      .then(function(buf, link){
         return JSON.parse(buf.toString());
       })
       .then(function(user) {
@@ -46,7 +47,7 @@ module.exports = function(Team, Token) {
           resolve(user);
         }
         else {
-          reject('Unauthorized');
+          reject('Incorrect team name or access token.');
         }
       })
       .catch(function(err){
@@ -55,11 +56,13 @@ module.exports = function(Team, Token) {
     });
   };
 
-  restQiitaAPI.getQiitaPages = function() {
+  restQiitaAPI.getQiitaPages = function(pageNum) {
     return new Promise((resolve, reject) => {
-      restAPI('items', options)
-      .then(function(page){
-        resolve(JSON.parse(page.toString()));
+      restAPI(`items?page=${pageNum}&per_page=1`, options)
+      .then(function(res){
+        const page = res[0];
+        const total = res[1];
+        resolve([JSON.parse(page.toString()), total]);
       })
       .catch(function(err){
         reject(err);