[Checkins] SVN: z3c.rest/trunk/TODO.txt Create a list of things to do before we are going to release version 1.0

Stephan Richter srichter at cosmos.phy.tufts.edu
Thu Dec 6 12:04:46 EST 2007


Log message for revision 82165:
  Create a list of things to do before we are going to release version 1.0 
  and announce it publically.
  

Changed:
  A   z3c.rest/trunk/TODO.txt

-=-
Added: z3c.rest/trunk/TODO.txt
===================================================================
--- z3c.rest/trunk/TODO.txt	                        (rev 0)
+++ z3c.rest/trunk/TODO.txt	2007-12-06 17:04:45 UTC (rev 82165)
@@ -0,0 +1,95 @@
+====
+TODO
+====
+
+For 1.0.0
+---------
+
+- Restructure the default container traverser to use the pluggable traverser
+  framework -- ``z3c.traverser`` -- instead.
+
+  * Write a custom implementation of the ``PluggableTraverser``, so that it
+    does *not* look up a view, if it cannot traverse.
+
+  * Register this custom pluggable traverser for *all* objects.
+
+  * Implement a custom ``ContainerTraverserPlugin`` that has the same
+    semantics as the item traverser in ``z3c/rest/traverser.py``, i.e. be able
+    to produce a null resource.
+
+  * Register the plugin for all item containers.
+
+- Implement a new package called ``z3c.restdemo`` that contains two demos that
+  show off the new REST framework. All demos must provide a comprehensive
+  doctest file demonstrating the API using the REST client.
+
+  The advantage of the following two demos is that they are not following the
+  typical container/item paradigm that Zope 3 content usually
+  exhibits. Addressing the more common content-structure scenarios will be
+  subject to development of version 2.0.
+
+  * Echo
+
+    This simple demo simply echos the request information sent to itself. It
+    should be available on *all* resources as `echo`. Here is a sample call:
+
+      >>> print client.put(
+      ...     'http://localhost/myfolder1/echo?param-1=value1',
+      ...     '''<?xml version="1.0" ?>
+      ...        <data>Hello World!</data>''',
+      ...     params={'param-2': 'value2', 'param-3': 'value3'},
+      ...     headers={'header-1': 'header-value-1',
+      ...              'header-2': 'header-value-2'}
+      ... )
+      <?xml version="1.0" ?>
+      <echo>
+        <path>/myfolder1/echo</path>
+        <method>PUT</method>
+        <protocol>HTTP/1.1</protocol>
+        <parameters>
+          <parameter name="param-1">value-1</parameter>
+          <parameter name="param-2">value-2</parameter>
+          <parameter name="param-3">value-3</parameter>
+        <parameters>
+        <headers>
+          <header name="cookie"></header>
+          <header name="header-1">header-value-1</header>
+          <header name="header-2">header-value-2</header>
+          <header name="host">localhost</header>
+          <header name="referer">localhost</header>
+        </headers>
+        <body><![CDATA[
+          <?xml version="1.0" ?>
+          <data>Hello World!</data>
+        ]]></body>
+      </echo>
+
+  * Tagging Engine
+
+    This is a more advanced demo providing a full REST API on top of a
+    `lovely.tag` tagging engine. The API should be very rich, allowing to
+    traverse into the tagging engine with path elements such as `tags`,
+    `users`, and `items`. Note that errors need to be handled gracefully.
+
+    For ideas on how to develop a REST API for a tagging engine, ask me
+    (Stephan).
+
+  * Service Announcement
+
+    The result of a "GET" on the root folder should result in an announcement
+    of the available services:
+
+    >>> print client.get('http://localhost/')
+    <?xml version="1.0" ?>
+    <services xmlns:xlink="http://www.w3.org/1999/xlink">
+      <service xlink:type="simple"
+               xlink:href="http://localhost/echo"
+               xlink:title="Echo">
+        Echo -- Returns all request data as the result body.
+      </service>
+      <service xlink:type="simple"
+               xlink:href="http://localhost/tagging"
+               xlink:title="Tagging Engine">
+        Tagging Engine -- A scalable tagging engine.
+      </service>
+    </services>


Property changes on: z3c.rest/trunk/TODO.txt
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Checkins mailing list