summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lehnardt <jan@apache.org>2010-01-30 01:22:36 +0000
committerJan Lehnardt <jan@apache.org>2010-01-30 01:22:36 +0000
commit8b3d706b70bd55f5a3a37ff48c9b809aacf2a8cb (patch)
tree3028fc74a061c701d129acc479c3e6ea1447ac0b
parentee09a0de9f8356abe24a0ac0f26cdff35f8fa704 (diff)
Allow Futon to run behind a HTTP proxy.
Depending no the Proxy's RFC 2616 compliance, some tests might fail (looking at you, nginx). Patch by Jack Moffit and Damjan Georgievski. Closes COUCHDB-321. git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@904705 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--THANKS2
-rw-r--r--share/www/script/couch.js3
-rw-r--r--share/www/script/couch_tests.js1
-rw-r--r--share/www/script/futon.js1
-rw-r--r--share/www/script/jquery.couch.js21
5 files changed, 17 insertions, 11 deletions
diff --git a/THANKS b/THANKS
index d8e2374e..e5449c44 100644
--- a/THANKS
+++ b/THANKS
@@ -44,5 +44,7 @@ suggesting improvements or submitting changes. Some of these people are:
* Ilia Cheishvili <ilia.cheishvili@gmail.com>
* Lena Herrmann <lena@zeromail.org>
* Filipe Manana <fdmanana@gmail.com>
+ * Jack Moffit <metajack@gmail.com>
+ * Damjan Georgievski <gdamjan@mail.net.mk>
For a list of authors see the `AUTHORS` file.
diff --git a/share/www/script/couch.js b/share/www/script/couch.js
index cb6fab89..f5f23f90 100644
--- a/share/www/script/couch.js
+++ b/share/www/script/couch.js
@@ -321,6 +321,7 @@ function CouchDB(name, httpHeaders) {
// CouchDB.* functions (except for calls to request itself).
// Use this from callers to check HTTP status or header values of requests.
CouchDB.last_req = null;
+CouchDB.urlPrefix = '';
CouchDB.login = function(name, password) {
CouchDB.last_req = CouchDB.request("POST", "/_session", {
@@ -411,7 +412,7 @@ CouchDB.newXhr = function() {
CouchDB.request = function(method, uri, options) {
options = options || {};
var req = CouchDB.newXhr();
- req.open(method, uri, false);
+ req.open(method, CouchDB.urlPrefix + uri, false);
if (options.headers) {
var headers = options.headers;
for (var headerName in headers) {
diff --git a/share/www/script/couch_tests.js b/share/www/script/couch_tests.js
index 5ae4f1d9..fe9f361e 100644
--- a/share/www/script/couch_tests.js
+++ b/share/www/script/couch_tests.js
@@ -19,6 +19,7 @@ if (typeof window == 'undefined' || !window) {
CouchDB.inBrowser = true;
}
+CouchDB.urlPrefix = "..";
var couchTests = {};
function loadTest(file) {
diff --git a/share/www/script/futon.js b/share/www/script/futon.js
index 005fe032..7401b4cc 100644
--- a/share/www/script/futon.js
+++ b/share/www/script/futon.js
@@ -361,6 +361,7 @@
}
+ $.couch.urlPrefix = "..";
$.futon = $.futon || {};
$.extend($.futon, {
navigation: new Navigation(),
diff --git a/share/www/script/jquery.couch.js b/share/www/script/jquery.couch.js
index 0203fd45..68672629 100644
--- a/share/www/script/jquery.couch.js
+++ b/share/www/script/jquery.couch.js
@@ -44,9 +44,10 @@
uuidCache = [];
$.extend($.couch, {
+ urlPrefix: '',
activeTasks: function(options) {
ajax(
- {url: "/_active_tasks"},
+ {url: this.urlPrefix + "/_active_tasks"},
options,
"Active task status could not be retrieved"
);
@@ -54,14 +55,14 @@
allDbs: function(options) {
ajax(
- {url: "/_all_dbs"},
+ {url: this.urlPrefix + "/_all_dbs"},
options,
"An error occurred retrieving the list of all databases"
);
},
config: function(options, section, option, value) {
- var req = {url: "/_config/"};
+ var req = {url: this.urlPrefix + "/_config/"};
if (section) {
req.url += encodeURIComponent(section) + "/";
if (option) {
@@ -85,7 +86,7 @@
session: function(options) {
options = options || {};
$.ajax({
- type: "GET", url: "/_session",
+ type: "GET", url: this.urlPrefix + "/_session",
complete: function(req) {
var resp = $.httpData(req, "json");
if (req.status == 200) {
@@ -120,7 +121,7 @@
login: function(options) {
options = options || {};
$.ajax({
- type: "POST", url: "/_session", dataType: "json",
+ type: "POST", url: this.urlPrefix + "/_session", dataType: "json",
data: {name: options.name, password: options.password},
complete: function(req) {
var resp = $.httpData(req, "json");
@@ -137,7 +138,7 @@
logout: function(options) {
options = options || {};
$.ajax({
- type: "DELETE", url: "/_session", dataType: "json",
+ type: "DELETE", url: this.urlPrefix + "/_session", dataType: "json",
username : "_", password : "_",
complete: function(req) {
var resp = $.httpData(req, "json");
@@ -155,7 +156,7 @@
db: function(name) {
return {
name: name,
- uri: "/" + encodeURIComponent(name) + "/",
+ uri: this.urlPrefix + "/" + encodeURIComponent(name) + "/",
compact: function(options) {
$.extend(options, {successStatus: 202});
@@ -377,7 +378,7 @@
info: function(options) {
ajax(
- {url: "/"},
+ {url: this.urlPrefix + "/"},
options,
"Server information could not be retrieved"
);
@@ -385,7 +386,7 @@
replicate: function(source, target, options) {
ajax({
- type: "POST", url: "/_replicate",
+ type: "POST", url: this.urlPrefix + "/_replicate",
data: JSON.stringify({source: source, target: target}),
contentType: "application/json"
},
@@ -399,7 +400,7 @@
cacheNum = 1;
}
if (!uuidCache.length) {
- ajax({url: "/_uuids", data: {count: cacheNum}, async: false}, {
+ ajax({url: this.urlPrefix + "/_uuids", data: {count: cacheNum}, async: false}, {
success: function(resp) {
uuidCache = resp.uuids
}