[Groonga-commit] groonga/gcs at ea2c1f3 [master] Support parameters passed by body

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Mar 2 16:30:41 JST 2014


Kouhei Sutou	2014-03-02 16:30:41 +0900 (Sun, 02 Mar 2014)

  New Revision: ea2c1f3ac82128a775eef9cc61aa9223beb9a8d3
  https://github.com/groonga/gcs/commit/ea2c1f3ac82128a775eef9cc61aa9223beb9a8d3

  Message:
    Support parameters passed by body
    
    GitHub: fix #141
    
    Reported by zjx20. Thanks!!!

  Modified files:
    lib/api/2011-02-01/configuration.js

  Modified: lib/api/2011-02-01/configuration.js (+32 -25)
===================================================================
--- lib/api/2011-02-01/configuration.js    2014-03-02 15:51:25 +0900 (cc9df52)
+++ lib/api/2011-02-01/configuration.js    2014-03-02 16:30:41 +0900 (0d670dc)
@@ -11,6 +11,13 @@ var uuid = require('node-uuid');
 
 exports.version = path.basename(__dirname);
 
+function parameterNames(request) {
+  var params = request.params || {};
+  var body = request.body || {};
+  var query = request.query || {};
+  return Object.keys(params).concat(Object.keys(body), Object.keys(query));
+}
+
 function handleDomanValidationError(process, variables) {
   try {
     return process();
@@ -140,7 +147,7 @@ function createDomainStatus(options) {
 
 handlers.CreateDomain = function(context, request, response, config) {
   var domain = handleDomanValidationError(function() {
-        return new Domain({ name:    request.query.DomainName || '',
+        return new Domain({ name:    request.param('DomainName') || '',
                             context: context }).validate();
       });
   domain.saveSync();
@@ -154,7 +161,7 @@ handlers.CreateDomain = function(context, request, response, config) {
 
 handlers.DeleteDomain = function(context, request, response, config) {
   var domain = handleDomanValidationError(function() {
-        return new Domain({ name:    request.query.DomainName || '',
+        return new Domain({ name:    request.param('DomainName') || '',
                             context: context }).validate();
       });
   var result;
@@ -205,7 +212,7 @@ function endpointBaseForRequest(request) {
 }
 
 handlers.DescribeDomains = function(context, request, response, config) {
-  var keys = Object.keys(request.query).filter(function(key) {
+  var keys = parameterNames(request).filter(function(key) {
         var match = key.match(/^DomainNames\.member\.([^\.]+)$/);
         if (!match) return false;
         var index = parseInt(match[1]);
@@ -216,7 +223,7 @@ handlers.DescribeDomains = function(context, request, response, config) {
         return true;
       });
   var domainNames = keys.sort().map(function(key) {
-        return request.query[key];
+        return request.param(key);
       });
   var domains = domainNames.length ?
                   domainNames.map(function(name) {
@@ -318,7 +325,7 @@ function createIndexFieldStatus(options) {
 handlers.DefineIndexField = function(context, request, response, config) {
   var validationErrors = [];
 
-  var domainName = request.query.DomainName || '';
+  var domainName = request.param('DomainName') || '';
   var domain;
   try {
     handleDomanValidationError(function() {
@@ -341,8 +348,8 @@ handlers.DefineIndexField = function(context, request, response, config) {
       throw new errors.ResourceNotFoundError('Domain not found: ' + domainName);
   }
 
-  var fieldName = request.query['IndexField.IndexFieldName'] || '';
-  var fieldType = request.query['IndexField.IndexFieldType'] || '';
+  var fieldName = request.param('IndexField.IndexFieldName') || '';
+  var fieldType = request.param('IndexField.IndexFieldType') || '';
   var field;
   try {
     handleIndexFieldValidationError(function() {
@@ -360,13 +367,13 @@ handlers.DefineIndexField = function(context, request, response, config) {
 
   assertNoOtherError();
 
-  var textOptions = Object.keys(request.query).filter(function(name) {
+  var textOptions = parameterNames(request).filter(function(name) {
         return name.indexOf('IndexField.TextOptions.') == 0;
       });
-  var literalOptions = Object.keys(request.query).filter(function(name) {
+  var literalOptions = parameterNames(request).filter(function(name) {
         return name.indexOf('IndexField.LiteralOptions.') == 0;
       });
-  var uintOptions = Object.keys(request.query).filter(function(name) {
+  var uintOptions = parameterNames(request).filter(function(name) {
         return name.indexOf('IndexField.UIntOptions.') == 0;
       });
 
@@ -382,7 +389,7 @@ handlers.DefineIndexField = function(context, request, response, config) {
                      uintOptions;
   var optionValues = {};
   optionNames.forEach(function(name) {
-    optionValues[name.replace(/^IndexField\.[^\.]+\./, '')] = request.query[name];
+    optionValues[name.replace(/^IndexField\.[^\.]+\./, '')] = request.param(name);
   });
 
   field.clearAllOptions();
@@ -400,7 +407,7 @@ handlers.DefineIndexField = function(context, request, response, config) {
 handlers.DeleteIndexField = function(context, request, response, config) {
   var validationErrors = [];
 
-  var domainName = request.query.DomainName || '';
+  var domainName = request.param('DomainName') || '';
   var domain;
   try {
     handleDomanValidationError(function() {
@@ -423,7 +430,7 @@ handlers.DeleteIndexField = function(context, request, response, config) {
       throw new errors.ResourceNotFoundError('Domain not found: ' + domainName);
   }
 
-  var fieldName = request.query['IndexFieldName'] || '';
+  var fieldName = request.param('IndexFieldName') || '';
   var field;
   try {
     handleIndexFieldValidationError(function() {
@@ -469,11 +476,11 @@ function createIndexFields(fields) {
 
 handlers.DescribeIndexFields = function(context, request, response, config) {
   var domain = handleDomanValidationError(function() {
-        return new Domain({ name:    request.query.DomainName,
+        return new Domain({ name:    request.param('DomainName'),
                             context: context }).validate();
       });
 
-  var keys = Object.keys(request.query).filter(function(key) {
+  var keys = parameterNames(request).filter(function(key) {
         var match = key.match(/^FieldNames\.member\.([^\.]+)$/);
         if (!match) return false;
         var index = parseInt(match[1]);
@@ -485,7 +492,7 @@ handlers.DescribeIndexFields = function(context, request, response, config) {
       });
   var appeared = {};
   var fieldNames = keys.map(function(key) {
-        return request.query[key];
+        return request.param(key);
       }).filter(function(name) {
         if (name in appeared) return false;
         appeared[name] = true;
@@ -525,7 +532,7 @@ function createFieldNames(domain) {
 }
 
 handlers.IndexDocuments = function(context, request, response, config) {
-  var domain = new Domain({ name:    request.query.DomainName,
+  var domain = new Domain({ name:    request.param('DomainName'),
                             context: context });
   domain.reindexSync();
   var result = createFieldNames(domain);
@@ -551,9 +558,9 @@ function createSynonymOptionsStatus(options) {
 }
 
 handlers.UpdateSynonymOptions = function(context, request, response, config) {
-  var domain = new Domain({ name:    request.query.DomainName,
+  var domain = new Domain({ name:    request.param('DomainName'),
                             context: context });
-  var synonymOptionsJson = request.query.Synonyms;
+  var synonymOptionsJson = request.param('Synonyms');
   var synonymOptions = JSON.parse(synonymOptionsJson);
   domain.updateSynonymsSync(synonymOptions.synonyms);
 
@@ -567,7 +574,7 @@ handlers.UpdateSynonymOptions = function(context, request, response, config) {
 };
 
 handlers.DescribeSynonymOptions = function(context, request, response, config) {
-  var domain = new Domain({ name:    request.query.DomainName,
+  var domain = new Domain({ name:    request.param('DomainName'),
                             context: context });
   var result = createSynonymOptionsStatus({
         domain:    domain,
@@ -593,9 +600,9 @@ function createDefaultSearchFieldStatus(options) {
 }
 
 handlers.UpdateDefaultSearchField = function(context, request, response, config) {
-  var domain = new Domain({ name:    request.query.DomainName,
+  var domain = new Domain({ name:    request.param('DomainName'),
                             context: context });
-  var fieldName = request.query.DefaultSearchField;
+  var fieldName = request.param('DefaultSearchField');
   domain.defaultSearchField = fieldName;
 
   var result = createDefaultSearchFieldStatus({
@@ -608,7 +615,7 @@ handlers.UpdateDefaultSearchField = function(context, request, response, config)
 };
 
 handlers.DescribeDefaultSearchField = function(context, request, response, config) {
-  var domain = new Domain({ name:    request.query.DomainName,
+  var domain = new Domain({ name:    request.param('DomainName'),
                             context: context });
   var field = domain.defaultSearchField;
   var result = createDefaultSearchFieldStatus({
@@ -655,7 +662,7 @@ exports.createHandler = function(context, config) {
 
     // GCS specific behaviour: fallback to other handlers for the endpoint
     // if no action is given.
-    var action = request.query.Action || '';
+    var action = request.param('Action');
     if (!action)
       return next();
 
@@ -663,7 +670,7 @@ exports.createHandler = function(context, config) {
     // but actual implementation of ACS accepts configuration requests
     // without Version specification.
     // See http://docs.amazonwebservices.com/cloudsearch/latest/developerguide/ConfigAPI.html
-    var version = request.query.Version;
+    var version = request.param('Version');
     if (version && version != exports.version) {
       message = 'A bad or out-of-range value "' + version + '" was supplied ' +
                 'for the "Version" input parameter.';
-------------- next part --------------
HTML����������������������������...
Download 



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