[Checkins] SVN: gocept.xmlrpcskin/trunk/README.txt Add usage example

Wolfgang Schnerring wosc at wosc.de
Tue Jul 26 05:33:56 EDT 2011


Log message for revision 122356:
  Add usage example
  

Changed:
  U   gocept.xmlrpcskin/trunk/README.txt

-=-
Modified: gocept.xmlrpcskin/trunk/README.txt
===================================================================
--- gocept.xmlrpcskin/trunk/README.txt	2011-07-26 09:29:09 UTC (rev 122355)
+++ gocept.xmlrpcskin/trunk/README.txt	2011-07-26 09:33:56 UTC (rev 122356)
@@ -2,7 +2,7 @@
 gocept.xmlrpcskin
 =================
 
-This package is an extension to ``zope.publisher`` that provides a ZCML
+This package is an extension to the Zope Publisher that provides a ZCML
 directive for XML-RPC views that supports a ``layer`` parameter.
 
 It collects the changes that briefly were contained in 3.5.0alpha releases (but
@@ -16,8 +16,54 @@
 Usage
 =====
 
-Include the necessary ZCML::
+The ``gocept:xmlrpcview`` directive is like the ``xmlrpc:view`` directive of
+``zope.app.publisher``, but with an additional parameter ``layer``.
 
+Here's an abbriged example (also available as
+``gocept.xmlrpcskin.tests.fixture``)::
+
+    <include package="zope.component" file="meta.zcml" />
+
     <include package="gocept.xmlrpcskin" file="meta.zcml" />
     <include package="gocept.xmlrpcskin" />
 
+    <interface
+      interface=".interfaces.IFooLayer"
+      type="gocept.xmlrpcskin.interfaces.IXMLRPCSkinType"
+      name="foo"
+      />
+
+    <gocept:xmlrpcview
+      for="*"
+      class=".view.Example"
+      permission="zope.Public"
+      methods="
+      all_layers
+      "
+      />
+
+    <gocept:xmlrpcview
+      for="*"
+      class=".view.Example"
+      layer=".interfaces.IFooLayer"
+      permission="zope.Public"
+      methods="
+      foo_layer
+      "
+      />
+
+
+    class IFooLayer(zope.publisher.interfaces.xmlrpc.IXMLRPCRequest):
+        pass
+
+    class Example(zope.app.publisher.xmlrpc.XMLRPCView):
+
+        def all_layers(self):
+            return dict(returncode=1)
+
+        def foo_layer(self):
+            return dict(returncode=2)
+
+
+The method ``all_layers`` will then be available on all layers, while
+``foo_layer`` only is available on ``/++skin++foo``.



More information about the checkins mailing list