From 7509e3e8b5f0c520d32711a80e02fc16eb55f542 Mon Sep 17 00:00:00 2001 From: Volker Mische Date: Sun, 25 Mar 2012 21:12:02 +0200 Subject: [PATCH] Add GET handler for _session Send back an "Admin Party"-like response on a GET request to /_session. This makes CouchApps work that rely on _session (like Mobile Futon). --- .../com/couchbase/touchdb/testapp/tests/Router.java | 10 ++++++++++ .../src/com/couchbase/touchdb/router/TDRouter.java | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/TouchDB-Android-TestApp/src/com/couchbase/touchdb/testapp/tests/Router.java b/TouchDB-Android-TestApp/src/com/couchbase/touchdb/testapp/tests/Router.java index e368448..648a8c9 100644 --- a/TouchDB-Android-TestApp/src/com/couchbase/touchdb/testapp/tests/Router.java +++ b/TouchDB-Android-TestApp/src/com/couchbase/touchdb/testapp/tests/Router.java @@ -134,6 +134,16 @@ public void testServer() { responseBody.put("version", TDRouter.getVersionString()); send(server, "GET", "/", TDStatus.OK, responseBody); + Map session = new HashMap(); + Map userCtx = new HashMap(); + List roles = new ArrayList(); + roles.add("_admin"); + session.put("ok", true); + userCtx.put("name", null); + userCtx.put("roles", roles); + session.put("userCtx", userCtx); + send(server, "GET", "/_session", TDStatus.OK, session); + List allDbs = new ArrayList(); send(server, "GET", "/_all_dbs", TDStatus.OK, allDbs); diff --git a/TouchDB-Android/src/com/couchbase/touchdb/router/TDRouter.java b/TouchDB-Android/src/com/couchbase/touchdb/router/TDRouter.java index 6e30e9f..bd18347 100644 --- a/TouchDB-Android/src/com/couchbase/touchdb/router/TDRouter.java +++ b/TouchDB-Android/src/com/couchbase/touchdb/router/TDRouter.java @@ -457,6 +457,19 @@ public TDStatus do_GET_all_dbs(TDDatabase _db, String _docID, String _attachment return new TDStatus(TDStatus.OK); } + public TDStatus do_GET_session(TDDatabase _db, String _docID, String _attachmentName) { + // Send back an "Admin Party"-like response + Map session= new HashMap(); + Map userCtx = new HashMap(); + String[] roles = {"_admin"}; + session.put("ok", true); + userCtx.put("name", null); + userCtx.put("roles", roles); + session.put("userCtx", userCtx); + connection.setResponseBody(new TDBody(session)); + return new TDStatus(TDStatus.OK); + } + public TDStatus do_POST_replicate(TDDatabase _db, String _docID, String _attachmentName) { // Extract the parameters from the JSON request body: // http://wiki.apache.org/couchdb/Replication