You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2017/09/21 10:22:10 UTC

[couchdb-fauxton] branch master updated: Fix for Mango Query addon when db name has special characters (#984)

This is an automated email from the ASF dual-hosted git repository.

garren pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb-fauxton.git


The following commit(s) were added to refs/heads/master by this push:
     new ddd72c4  Fix for Mango Query addon when db name has special characters (#984)
ddd72c4 is described below

commit ddd72c4af9f16865d7332e0d804ad761d84900f2
Author: Antonio Maranhao <30...@users.noreply.github.com>
AuthorDate: Thu Sep 21 06:22:08 2017 -0400

    Fix for Mango Query addon when db name has special characters (#984)
    
    Encode DB name in URLs
---
 app/addons/documents/base.js              |  6 +++---
 app/addons/documents/index-results/api.js | 10 ++++++----
 app/addons/documents/mango/mango.api.js   |  4 ++--
 app/addons/documents/mangolayout.js       |  2 +-
 app/addons/documents/routes-mango.js      |  4 ++--
 5 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/app/addons/documents/base.js b/app/addons/documents/base.js
index 93534c1..8e4f950 100644
--- a/app/addons/documents/base.js
+++ b/app/addons/documents/base.js
@@ -203,7 +203,7 @@ FauxtonAPI.registerUrls('mango', {
   },
 
   'index-server-bulk-delete': function (db) {
-    return app.host + '/' + encodeURIComponent(db) + '/_index/_bulk_delete';
+    return app.host + '/' + db + '/_index/_bulk_delete';
   },
 
   'query-server': function (db, query) {
@@ -231,11 +231,11 @@ FauxtonAPI.registerUrls('mango', {
   },
 
   'explain-server': function (db) {
-    return app.host + '/' + app.utils.safeURLName(db) + '/_explain';
+    return app.host + '/' + db + '/_explain';
   },
 
   'explain-apiurl': function (db) {
-    return window.location.origin + '/' + app.utils.safeURLName(db) + '/_explain';
+    return window.location.origin + '/' + db + '/_explain';
   }
 });
 
diff --git a/app/addons/documents/index-results/api.js b/app/addons/documents/index-results/api.js
index d285363..4846c31 100644
--- a/app/addons/documents/index-results/api.js
+++ b/app/addons/documents/index-results/api.js
@@ -26,10 +26,12 @@ export const queryAllDocs = (fetchUrl, params) => {
     }
   })
   .then(res => res.json())
-  .then(res => {
+  .then(json => {
+    if (json.error) {
+      throw new Error('(' + json.error + ') ' + json.reason);
+    }
     return {
-      //TODO: handle error situation
-      docs: res.error ? [] : res.rows,
+      docs: json.rows,
       docType: Constants.INDEX_RESULTS_DOC_TYPE.VIEW
     };
   });
@@ -50,7 +52,7 @@ export const postToBulkDocs = (databaseName, payload) => {
 };
 
 export const postToIndexBulkDelete = (databaseName, payload) => {
-  const url = FauxtonAPI.urls('mango', 'index-server-bulk-delete', databaseName);
+  const url = FauxtonAPI.urls('mango', 'index-server-bulk-delete', encodeURIComponent(databaseName));
   return fetch(url, {
     method: 'POST',
     credentials: 'include',
diff --git a/app/addons/documents/mango/mango.api.js b/app/addons/documents/mango/mango.api.js
index 61e9f54..823bbe6 100644
--- a/app/addons/documents/mango/mango.api.js
+++ b/app/addons/documents/mango/mango.api.js
@@ -17,7 +17,7 @@ import FauxtonAPI from "../../../core/api";
 import Constants from '../constants';
 
 export const fetchQueryExplain = (databaseName, queryCode) => {
-  const url = FauxtonAPI.urls('mango', 'explain-server', databaseName);
+  const url = FauxtonAPI.urls('mango', 'explain-server', encodeURIComponent(databaseName));
 
   return fetch(url, {
     headers: {
@@ -105,7 +105,7 @@ export const mergeFetchParams = (queryCode, fetchParams) => {
 };
 
 export const mangoQueryDocs = (databaseName, queryCode, fetchParams) => {
-  const url = FauxtonAPI.urls('mango', 'query-server', databaseName);
+  const url = FauxtonAPI.urls('mango', 'query-server', encodeURIComponent(databaseName));
   const modifiedQuery = mergeFetchParams(queryCode, fetchParams);
   return fetch(url, {
     headers: {
diff --git a/app/addons/documents/mangolayout.js b/app/addons/documents/mangolayout.js
index 4973f7a..1cb7779 100644
--- a/app/addons/documents/mangolayout.js
+++ b/app/addons/documents/mangolayout.js
@@ -123,7 +123,7 @@ class MangoLayout extends Component {
     let endpoint = this.props.endpoint;
 
     if (this.props.explainPlan) {
-      endpoint = FauxtonAPI.urls('mango', 'explain-apiurl', database);
+      endpoint = FauxtonAPI.urls('mango', 'explain-apiurl', encodeURIComponent(database));
     }
     let queryFunction = (params) => { return MangoAPI.mangoQueryDocs(databaseName, queryFindCode, params); };
     let docType = Constants.INDEX_RESULTS_DOC_TYPE.MANGO_QUERY;
diff --git a/app/addons/documents/routes-mango.js b/app/addons/documents/routes-mango.js
index 8205c6e..26120bf 100644
--- a/app/addons/documents/routes-mango.js
+++ b/app/addons/documents/routes-mango.js
@@ -53,7 +53,7 @@ const MangoIndexEditorAndQueryEditor = FauxtonAPI.RouteObject.extend({
       {name: app.i18n.en_US['mango-title-editor']}
     ];
 
-    const endpoint = FauxtonAPI.urls('mango', 'query-apiurl', this.databaseName);
+    const endpoint = FauxtonAPI.urls('mango', 'query-apiurl', encodeURIComponent(this.databaseName));
 
     return <MangoLayoutContainer
       database={database}
@@ -84,7 +84,7 @@ const MangoIndexEditorAndQueryEditor = FauxtonAPI.RouteObject.extend({
     const url = FauxtonAPI.urls(
       'allDocs', 'app', encodeURIComponent(this.databaseName), '?limit=' + FauxtonAPI.constants.DATABASES.DOCUMENT_LIMIT
     );
-    const endpoint = FauxtonAPI.urls('mango', 'index-apiurl', this.databaseName);
+    const endpoint = FauxtonAPI.urls('mango', 'index-apiurl', encodeURIComponent(this.databaseName));
 
     const crumbs = [
       {name: database, link: url},

-- 
To stop receiving notification emails like this one, please contact
['"commits@couchdb.apache.org" <co...@couchdb.apache.org>'].