webish: add an extra newline to JSON output
authorBrian Warner <warner@lothar.com>
Mon, 15 Sep 2008 20:43:14 +0000 (13:43 -0700)
committerBrian Warner <warner@lothar.com>
Mon, 15 Sep 2008 20:43:14 +0000 (13:43 -0700)
src/allmydata/web/checker_results.py
src/allmydata/web/directory.py
src/allmydata/web/filenode.py
src/allmydata/web/introweb.py
src/allmydata/web/status.py

index 80251c2c91373c740cc37e219e1af6090a41843d..e82e63b827d7c16d5d93f2dc913b40a898bf8b21 100644 (file)
@@ -82,7 +82,7 @@ class LiteralCheckerResults(rend.Page, ResultsBase):
         data = {"storage-index": "",
                 "results": {"healthy": True},
                 }
-        return simplejson.dumps(data, indent=1)
+        return simplejson.dumps(data, indent=1) + "\n"
 
 class CheckerResults(rend.Page, ResultsBase):
     docFactory = getxmlfile("checker-results.xhtml")
@@ -98,7 +98,7 @@ class CheckerResults(rend.Page, ResultsBase):
     def json(self, ctx):
         inevow.IRequest(ctx).setHeader("content-type", "text/plain")
         data = self._json_check_results(self.r)
-        return simplejson.dumps(data, indent=1)
+        return simplejson.dumps(data, indent=1) + "\n"
 
     def render_storage_index(self, ctx, data):
         return self.r.get_storage_index_string()
@@ -133,7 +133,7 @@ class CheckAndRepairResults(rend.Page, ResultsBase):
     def json(self, ctx):
         inevow.IRequest(ctx).setHeader("content-type", "text/plain")
         data = self._json_check_and_repair_results(self.r)
-        return simplejson.dumps(data, indent=1)
+        return simplejson.dumps(data, indent=1) + "\n"
 
     def render_storage_index(self, ctx, data):
         return self.r.get_storage_index_string()
@@ -200,7 +200,7 @@ class DeepCheckResults(rend.Page, ResultsBase):
                                          in self.r.get_all_results().items()
                                          if not r.is_healthy() ]
         data["stats"] = self.r.get_stats()
-        return simplejson.dumps(data, indent=1)
+        return simplejson.dumps(data, indent=1) + "\n"
 
     def render_root_storage_index(self, ctx, data):
         return self.r.get_root_storage_index_string()
@@ -348,7 +348,7 @@ class DeepCheckAndRepairResults(rend.Page, ResultsBase):
                                          in self.r.get_all_results().items()
                                          if not r.get_pre_repair_results().is_healthy() ]
         data["stats"] = self.r.get_stats()
-        return simplejson.dumps(data, indent=1)
+        return simplejson.dumps(data, indent=1) + "\n"
 
     def render_root_storage_index(self, ctx, data):
         return self.r.get_root_storage_index_string()
index c4624678d0f1bcbe6f750097eafe858166324ce5..e6cd3332fa588404744c0f9ba0596a8417c18e4a 100644 (file)
@@ -692,7 +692,7 @@ def DirectoryJSONMetadata(ctx, dirnode):
             contents['rw_uri'] = drw_uri
         contents['mutable'] = dirnode.is_mutable()
         data = ("dirnode", contents)
-        return simplejson.dumps(data, indent=1)
+        return simplejson.dumps(data, indent=1) + "\n"
     d.addCallback(_got)
     d.addCallback(text_plain, ctx)
     return d
index 664b53c1488920a61989e96af302ff90496bbc55..f2d9ce254b7ded86a914c4b8df24662f4a912a92 100644 (file)
@@ -398,7 +398,7 @@ def FileJSONMetadata(ctx, filenode):
     if rw_uri:
         data[1]['rw_uri'] = rw_uri
     data[1]['mutable'] = filenode.is_mutable()
-    return text_plain(simplejson.dumps(data, indent=1), ctx)
+    return text_plain(simplejson.dumps(data, indent=1) + "\n", ctx)
 
 def FileURI(ctx, filenode):
     return text_plain(filenode.get_uri(), ctx)
index 14ef9a51a134be0bb3a77f7197cd64c8e7519d04..b2e9fa678940e2f043fe23184c987c87c0fc94e0 100644 (file)
@@ -36,7 +36,7 @@ class IntroducerRoot(rend.Page):
             announcement_summary[service_name] += 1
         res["announcement_summary"] = announcement_summary
 
-        return simplejson.dumps(res, indent=1)
+        return simplejson.dumps(res, indent=1) + "\n"
 
     def data_version(self, ctx, data):
         return get_package_versions_string()
index 2c9bafaac91d6541b05bea1180739ab8fbeb5a8a..f97ca515d1bcb7b5feb2bcc1d9e49140a3140634 100644 (file)
@@ -805,7 +805,7 @@ class Status(rend.Page):
                                "progress": s.get_progress(),
                                })
 
-        return simplejson.dumps(data, indent=1)
+        return simplejson.dumps(data, indent=1) + "\n"
 
     def _get_all_statuses(self, client):
         return itertools.chain(client.list_all_upload_statuses(),
@@ -931,10 +931,10 @@ class HelperStatus(rend.Page):
         try:
             h = IClient(ctx).getServiceNamed("helper")
         except KeyError:
-            return simplejson.dumps({})
+            return simplejson.dumps({}) + "\n"
 
         stats = h.get_stats()
-        return simplejson.dumps(stats, indent=1)
+        return simplejson.dumps(stats, indent=1) + "\n"
 
     def render_active_uploads(self, ctx, data):
         return data["chk_upload_helper.active_uploads"]
@@ -974,7 +974,7 @@ class Statistics(rend.Page):
         t = get_arg(inevow.IRequest(ctx), "t")
         if t == "json":
             inevow.IRequest(ctx).setHeader("content-type", "text/plain")
-            return simplejson.dumps(stats, indent=1)
+            return simplejson.dumps(stats, indent=1) + "\n"
         # is there a better way to provide 'data' to all rendering methods?
         self.original = stats
         return rend.Page.renderHTTP(self, ctx)