]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
webish.py: add links to JSON/etc representations of directory contents to the listing
authorBrian Warner <warner@lothar.com>
Sat, 7 Jul 2007 18:31:07 +0000 (11:31 -0700)
committerBrian Warner <warner@lothar.com>
Sat, 7 Jul 2007 18:31:07 +0000 (11:31 -0700)
docs/webapi.txt
src/allmydata/web/directory.xhtml
src/allmydata/webish.py

index 49a4a9ae67f9982ddcf84a9d3b3cdcb253ca95c5..f00768995fe520929a1fa4a81c3ae412d6ebb43d 100644 (file)
@@ -117,6 +117,12 @@ for files and directories which do not yet exist.
 
   This returns the URI of the given file in the HTTP response body.
 
+ GET FILEURL?t=readonly-uri
+
+  This also returns the URI of the given file. For now, all files are
+  immutable, so t=uri and t=readonly-uri return the same value. In the
+  future, when we have mutable files, they will return different values.
+
 === Directories ===
 
  GET DIRURL
@@ -148,6 +154,10 @@ for files and directories which do not yet exist.
   Return a URI for this dirnode in the HTTP response body. If the dirnode is
   read-only, the t=uri and t=readonly-uri responses will be the same.
 
+ GET DIRURL?t=manifest
+
+  Return an HTML-formatted manifest of the given directory, for debugging.
+
  PUT NEWDIRURL?t=mkdir
 
   Create a new empty directory at the given path. The HTTP response contains
index 6ec85ba363edd424e4d62d6256e681adda6ed50b..b482f0fa4417921b06fe467d4b49c4de9384016b 100644 (file)
     <td>Filename</td>
     <td>Type</td>
     <td>Size</td>
-    <td>URI</td>
+    <td>other representations</td>
     <td></td>
   </tr>
   <tr n:pattern="item" n:render="row">
     <td><n:slot name="filename"/></td>
     <td><n:slot name="type"/></td>
     <td><n:slot name="size"/></td>
-    <td><pre class="overflow"><n:slot name="uri"/></pre></td>
+    <td><n:slot name="data"/></td>
     <td><n:slot name="delete"/></td>
   </tr>
 
index 47d536b603142ac9b8b8c0e2e8b38ea32f77ad5c..f4c89cac0124ddc8ee518c2c20cd7883cbd843b0 100644 (file)
@@ -99,20 +99,30 @@ class Directory(rend.Page):
             delete = "-"
         ctx.fillSlots("delete", delete)
 
+        childdata = [T.a(href="%s?t=json" % name)["JSON"], ", ",
+                     T.a(href="%s?t=xml" % name)["XML"], ", ",
+                     T.a(href="%s?t=uri" % name)["URI"], ", ",
+                     T.a(href="%s?t=readonly-uri" % name)["readonly-URI"], ", ",
+                     T.a(href="/uri/%s" % target.get_uri())["URI-link"],
+                     ]
+        ctx.fillSlots("data", childdata)
+
         if IFileNode.providedBy(target):
             # file
             dlurl = urllib.quote(name)
             ctx.fillSlots("filename",
                           T.a(href=dlurl)[html.escape(name)])
             ctx.fillSlots("type", "FILE")
-            uri = target.uri
-            dl_uri_url = url.root.child("download_uri").child(uri)
-            # add a filename= query argument to give it a Content-Type
-            dl_uri_url = dl_uri_url.add("filename", name)
-            ctx.fillSlots("uri", T.a(href=dl_uri_url)[html.escape(uri)])
+
+
+            #uri = target.uri
+            #dl_uri_url = url.root.child("download_uri").child(uri)
+            ## add a filename= query argument to give it a Content-Type
+            #dl_uri_url = dl_uri_url.add("filename", name)
+            #ctx.fillSlots("uri", T.a(href=dl_uri_url)[html.escape(uri)])
 
             #extract and display file size
-            ctx.fillSlots("size", unpack_uri(uri)['size'])
+            ctx.fillSlots("size", unpack_uri(target.get_uri())['size'])
 
         elif IDirectoryNode.providedBy(target):
             # directory
@@ -125,7 +135,6 @@ class Directory(rend.Page):
                 dirtype = "DIR-RO"
             ctx.fillSlots("type", dirtype)
             ctx.fillSlots("size", "-")
-            ctx.fillSlots("uri", "-")
         else:
             raise RuntimeError("unknown thing %s" % (target,))
         return ctx.tag
@@ -747,6 +756,8 @@ class VDrive(rend.Page):
                         return FileXMLMetadata(node), ()
                     elif t == "uri":
                         return FileURI(node), ()
+                    elif t == "readonly-uri":
+                        return FileURI(node), ()
                     else:
                         raise RuntimeError("bad t=%s" % t)
                 elif IDirectoryNode.providedBy(node):