From 3e1c417f81077c2999e91b11652fd8ce3915df40 Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@allmydata.com>
Date: Thu, 23 Aug 2007 13:00:39 -0700
Subject: [PATCH] webish: modify JSON to match zooko's proposed API changes in
 #118

---
 src/allmydata/test/test_web.py | 11 ++++++-----
 src/allmydata/webish.py        | 17 ++++++++---------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/allmydata/test/test_web.py b/src/allmydata/test/test_web.py
index 6587d74a..e2356a49 100644
--- a/src/allmydata/test/test_web.py
+++ b/src/allmydata/test/test_web.py
@@ -268,17 +268,18 @@ class WebMixin(object):
         self.failUnless(isinstance(data, list))
         self.failUnlessEqual(data[0], "filenode")
         self.failUnless(isinstance(data[1], dict))
-        self.failUnlessEqual(data[1]["mutable"], False)
+        self.failIf("rw_uri" in data[1]) # immutable
+        self.failUnlessEqual(data[1]["ro_uri"], self._bar_txt_uri)
         self.failUnlessEqual(data[1]["size"], 123)
-        self.failUnlessEqual(data[1]["uri"], self._bar_txt_uri)
 
     def failUnlessIsFooJSON(self, res):
         data = self.worlds_cheapest_json_decoder(res)
         self.failUnless(isinstance(data, list))
         self.failUnlessEqual(data[0], "dirnode")
         self.failUnless(isinstance(data[1], dict))
-        self.failUnlessEqual(data[1]["mutable"], True)
-        self.failUnlessEqual(data[1]["uri"], self._foo_uri)
+        self.failUnless("rw_uri" in data[1]) # mutable
+        self.failUnlessEqual(data[1]["rw_uri"], self._foo_uri)
+        self.failUnlessEqual(data[1]["ro_uri"], self._foo_readonly_uri)
         kidnames = sorted(data[1]["children"].keys())
         self.failUnlessEqual(kidnames,
                              ["bar.txt", "blockingfile", "empty", "sub"])
@@ -286,7 +287,7 @@ class WebMixin(object):
         self.failUnlessEqual(kids["sub"][0], "dirnode")
         self.failUnlessEqual(kids["bar.txt"][0], "filenode")
         self.failUnlessEqual(kids["bar.txt"][1]["size"], 123)
-        self.failUnlessEqual(kids["bar.txt"][1]["uri"], self._bar_txt_uri)
+        self.failUnlessEqual(kids["bar.txt"][1]["ro_uri"], self._bar_txt_uri)
 
     def GET(self, urlpath, followRedirect=False):
         url = self.webish_url + urlpath
diff --git a/src/allmydata/webish.py b/src/allmydata/webish.py
index 52c5ffe3..7f030e81 100644
--- a/src/allmydata/webish.py
+++ b/src/allmydata/webish.py
@@ -398,8 +398,7 @@ class FileJSONMetadata(rend.Page):
     def renderNode(self, filenode):
         file_uri = filenode.get_uri()
         data = ("filenode",
-                {'mutable': False,
-                 'uri': file_uri,
+                {'ro_uri': file_uri,
                  'size': filenode.get_size(),
                  })
         return simplejson.dumps(data, indent=1)
@@ -488,22 +487,22 @@ class DirectoryJSONMetadata(rend.Page):
                 if IFileNode.providedBy(childnode):
                     kiduri = childnode.get_uri()
                     kiddata = ("filenode",
-                               {'mutable': False,
-                                'uri': kiduri,
+                               {'ro_uri': kiduri,
                                 'size': childnode.get_size(),
                                 })
                 else:
                     assert IDirectoryNode.providedBy(childnode)
-                    kiduri = childnode.get_uri()
                     kiddata = ("dirnode",
-                               {'mutable': childnode.is_mutable(),
-                                'uri': kiduri,
+                               {'ro_uri': childnode.get_immutable_uri(),
                                 })
+                    if childnode.is_mutable():
+                        kiddata[1]['rw_uri'] = childnode.get_uri()
                 kids[name] = kiddata
             contents = { 'children': kids,
-                         'mutable': node.is_mutable(),
-                         'uri': node.get_uri(),
+                         'ro_uri': node.get_immutable_uri(),
                          }
+            if node.is_mutable():
+                contents['rw_uri'] = node.get_uri()
             data = ("dirnode", contents)
             return simplejson.dumps(data, indent=1)
         d.addCallback(_got)
-- 
2.45.2