 +        log.err("request=%s\n" % (request,))
 +        log.err("source=%s\n" % (source,))
 +        log.err("source_uri=%s\n" % (source_uri,))
++        log.err("data=%s\n" % (data,))
 +        log.err("destination=%s\n" % (destination,))
 +        log.err("destination_uri=%s\n" % (destination_uri,))
 +        log.err("deletesource=%s\n" % (deletesource,))

+    @param source:            the L{DAVFile} for the source resource to copy from, or None if source data
+                              is to be read from the request.
+    @param source_uri:        the URI for the source resource.
+    @param destination:       the L{DAVFile} for the destination resource to copy into.
+    @param destination_uri:   the URI for the destination resource.
+    @param deletesource:      True if the source resource is to be deleted on successful completion, False otherwise.

+from twisted.web2.http import HTTPError
+from twisted.web2.http import StatusResponse
+from twisted.web2.iweb import IResponse
+from twisted.web2.stream import MemoryStream
+
+import md5
+
+def storeResource(
+    request,
+    source=None, source_uri=None, data=None,
+    destination=None, destination_uri=None,
+    deletesource=False,
+    depth="0"
