Yuki Takei 9 лет назад
Родитель
Сommit
276b1a1d20
3 измененных файлов с 41 добавлено и 13 удалено
  1. 33 3
      lib/crowi/index.js
  2. 1 1
      lib/util/basicInterceptor.js
  3. 7 9
      lib/util/interceptorManager.js

+ 33 - 3
lib/crowi/index.js

@@ -281,6 +281,37 @@ Crowi.prototype.setupInterceptorManager = function() {
   return new Promise(function(resolve, reject) {
     self.interceptorManager = require('../util/interceptorManager')(self);
 
+    // intercepter test 1
+    self.interceptorManager.addInterceptor({
+      isInterceptWhen: (contextName) => {
+        // implement this
+        return true;
+      },
+      isProcessableParallel: () => {
+        // implement this
+        return false;
+      },
+      process: (contextName, ...args) => {
+        args[0].page.revision.body += 'hogehoge';
+        return Promise.resolve(...args);
+      }
+    });
+    // intercepter test 2
+    self.interceptorManager.addInterceptor({
+      isInterceptWhen: (contextName) => {
+        // implement this
+        return true;
+      },
+      isProcessableParallel: () => {
+        // implement this
+        return false;
+      },
+      process: (contextName, ...args) => {
+        args[0].page.revision.body += 'fugafuga';
+        return Promise.resolve(...args);
+      }
+    });
+    // intercepter test 3
     self.interceptorManager.addInterceptor({
       isInterceptWhen: (contextName) => {
         // implement this
@@ -291,9 +322,8 @@ Crowi.prototype.setupInterceptorManager = function() {
         return true;
       },
       process: (contextName, ...args) => {
-        console.log(args[0][0].page);
-        args[0][0].page.revision.body += 'hogehogefugafuga';
-        Promise.resolve(args[0]);
+        args[0].page.creator.name += '2(renamed)';
+        return Promise.resolve(...args);
       }
     });
 

+ 1 - 1
lib/util/basicInterceptor.js

@@ -15,7 +15,7 @@ class BasicInterceptor {
 
   process(contextName, ...args) {
     // override this
-    return Promise.resolve();
+    return Promise.resolve(...args);
   }
 
 }

+ 7 - 9
lib/util/interceptorManager.js

@@ -1,4 +1,4 @@
-var debug = require('debug')('crowi:InterceptorManager')
+const debug = require('debug')('crowi:InterceptorManager')
 
 /**
  * the manager class of Interceptor
@@ -29,15 +29,13 @@ class InterceptorManager {
 
     return Promise.all(
       parallels.map((interceptor) => {
-        return interceptor.process(contextName, args);
+        return interceptor.process(contextName, ...args);
       })
-      // .concat[
-      //   sequentials.map((interceptor) => (results) => {
-      //     interceptor.process(contextName, results)
-      //   }).reduce((promise, func) => {
-      //     return promise.then((results) => func(results));
-      //   }, Promise.resolve(args)).then(() => { return Promise.resolve() })
-      // ]
+      .concat([
+        sequentials.reduce((prevPromise, nextInterceptor) => {
+          return prevPromise.then((...results) => nextInterceptor.process(contextName, ...results));
+        }, Promise.resolve(...args))
+      ])
     ).then(() => {
       console.log("Promise.all().then()");
       return;