[Groonga-commit] droonga/express-droonga at 6cd5d1f [master] Handle authorization errors by express-droonga itself

Back to archive index

YUKI Hiroshi null+****@clear*****
Fri Jan 10 16:10:59 JST 2014


YUKI Hiroshi	2014-01-10 16:10:59 +0900 (Fri, 10 Jan 2014)

  New Revision: 6cd5d1fbdecb8feb9e0c48a414e2f6c9eeef8883
  https://github.com/droonga/express-droonga/commit/6cd5d1fbdecb8feb9e0c48a414e2f6c9eeef8883

  Message:
    Handle authorization errors by express-droonga itself

  Modified files:
    lib/adapter/command.js
    lib/adapter/http.js

  Modified: lib/adapter/command.js (+17 -0)
===================================================================
--- lib/adapter/command.js    2014-01-09 20:55:41 +0900 (fca3878)
+++ lib/adapter/command.js    2014-01-10 16:10:59 +0900 (81cbf07)
@@ -305,3 +305,20 @@ function sha1sum(source) {
   return hash.digest('hex');
 }
 exports.sha1sum = sha1sum;
+
+
+function NotAuthorized(message) {
+  var error = new Error(message);
+  error.code = 401;
+  error.constructor = NotAuthorized;
+  return error;
+}
+exports.NotAuthorized = NotAuthorized;
+
+function NotAllowed(message) {
+  var error = new Error(message);
+  error.code = 403;
+  error.constructor = NotAllowed;
+  return error;
+}
+exports.NotAllowed = NotAllowed;

  Modified: lib/adapter/http.js (+14 -6)
===================================================================
--- lib/adapter/http.js    2014-01-09 20:55:41 +0900 (5378219)
+++ lib/adapter/http.js    2014-01-10 16:10:59 +0900 (6523e21)
@@ -35,21 +35,25 @@ function createRequestResponseHandler(params) {
         }
       }
 
-    var processRequest = function() {
+    var processRequest = function(error) {
+      if (error) {
+        response.jsonp({ error: error.message }, error.code || 500);
+        return;
+      }
       var wrappedConnection = new wrapper.DroongaProtocolConnectionWrapper(connection, callback, options);
       if (definition.onRequest) {
         try {
           definition.onRequest(request, wrappedConnection, response);
         } catch(error) {
           wrappedConnection.destroy();
-          response.jsonp(error, 500);
+          response.jsonp({ error: error.message }, 500);
         }
       } else {
         wrappedConnection.emit(commandName, request.query);
       }
     };
     if (typeof definition.authorize == 'function')
-      definition.authorize(processRequest, request, response);
+      definition.authorize(processRequest, request);
     else
       processRequest();
   });
@@ -69,17 +73,21 @@ function createGenericHandler(params) {
       dataset: definition.dataset,
       timeout: definition.timeout || null
     };
-    var processRequest = function() {
+    var processRequest = function(error) {
+      if (error) {
+        response.jsonp({ error: error.message }, error.code || 500);
+        return;
+      }
       var wrappedConnection = new wrapper.DroongaProtocolConnectionWrapper(connection, options);
       try {
         definition.onHandle(request, response, wrappedConnection);
       } catch(error) {
         wrappedConnection.destroy();
-        response.jsonp(error, 500);
+        response.jsonp({ error: error.message }, 500);
       }
     };
     if (typeof definition.authorize == 'function')
-      definition.authorize(processRequest, request, response);
+      definition.authorize(processRequest, request);
     else
       processRequest();
   });
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index