Index: third_party/twisted_8_1/twisted/web/resource.py |
diff --git a/third_party/twisted_8_1/twisted/web/resource.py b/third_party/twisted_8_1/twisted/web/resource.py |
deleted file mode 100644 |
index 0becb8de96e8b9e8f8e0552e7bc9c066afa70bf0..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/web/resource.py |
+++ /dev/null |
@@ -1,204 +0,0 @@ |
-# -*- test-case-name: twisted.web.test.test_web -*- |
-# |
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
- |
-"""I hold the lowest-level Resource class.""" |
- |
- |
-# System Imports |
-from twisted.internet import defer |
-from twisted.python import roots, reflect |
-from zope.interface import Attribute, implements, Interface |
- |
-class IResource(Interface): |
- """A web resource.""" |
- |
- isLeaf = Attribute(\ |
-"""Signal if this IResource implementor is a "leaf node" or not. If True, |
-getChildWithDefault will not be called on this Resource.""") |
- |
- def getChildWithDefault(name, request): |
- """Return a child with the given name for the given request. |
- This is the external interface used by the Resource publishing |
- machinery. If implementing IResource without subclassing |
- Resource, it must be provided. However, if subclassing Resource, |
- getChild overridden instead. |
- """ |
- |
- def putChild(path, child): |
- """Put a child IResource implementor at the given path. |
- """ |
- |
- def render(request): |
- """Render a request. This is called on the leaf resource for |
- a request. Render must return either a string, which will |
- be sent to the browser as the HTML for the request, or |
- server.NOT_DONE_YET. If NOT_DONE_YET is returned, |
- at some point later (in a Deferred callback, usually) |
- call request.write("<html>") to write data to the request, |
- and request.finish() to send the data to the browser. |
- """ |
- |
- |
-def getChildForRequest(resource, request): |
- """Traverse resource tree to find who will handle the request.""" |
- while request.postpath and not resource.isLeaf: |
- pathElement = request.postpath.pop(0) |
- request.prepath.append(pathElement) |
- resource = resource.getChildWithDefault(pathElement, request) |
- return resource |
- |
- |
-class Resource: |
- """I define a web-accessible resource. |
- |
- I serve 2 main purposes; one is to provide a standard representation for |
- what HTTP specification calls an 'entity', and the other is to provide an |
- abstract directory structure for URL retrieval. |
- """ |
- |
- implements(IResource) |
- |
- entityType = IResource |
- |
- server = None |
- |
- def __init__(self): |
- """Initialize. |
- """ |
- self.children = {} |
- |
- isLeaf = 0 |
- |
- ### Abstract Collection Interface |
- |
- def listStaticNames(self): |
- return self.children.keys() |
- |
- def listStaticEntities(self): |
- return self.children.items() |
- |
- def listNames(self): |
- return self.listStaticNames() + self.listDynamicNames() |
- |
- def listEntities(self): |
- return self.listStaticEntities() + self.listDynamicEntities() |
- |
- def listDynamicNames(self): |
- return [] |
- |
- def listDynamicEntities(self, request=None): |
- return [] |
- |
- def getStaticEntity(self, name): |
- return self.children.get(name) |
- |
- def getDynamicEntity(self, name, request): |
- if not self.children.has_key(name): |
- return self.getChild(name, request) |
- else: |
- return None |
- |
- def delEntity(self, name): |
- del self.children[name] |
- |
- def reallyPutEntity(self, name, entity): |
- self.children[name] = entity |
- |
- # Concrete HTTP interface |
- |
- def getChild(self, path, request): |
- """Retrieve a 'child' resource from me. |
- |
- Implement this to create dynamic resource generation -- resources which |
- are always available may be registered with self.putChild(). |
- |
- This will not be called if the class-level variable 'isLeaf' is set in |
- your subclass; instead, the 'postpath' attribute of the request will be |
- left as a list of the remaining path elements. |
- |
- For example, the URL /foo/bar/baz will normally be:: |
- |
- | site.resource.getChild('foo').getChild('bar').getChild('baz'). |
- |
- However, if the resource returned by 'bar' has isLeaf set to true, then |
- the getChild call will never be made on it. |
- |
- @param path: a string, describing the child |
- |
- @param request: a twisted.web.server.Request specifying meta-information |
- about the request that is being made for this child. |
- """ |
- return error.NoResource("No such child resource.") |
- |
- def getChildWithDefault(self, path, request): |
- """Retrieve a static or dynamically generated child resource from me. |
- |
- First checks if a resource was added manually by putChild, and then |
- call getChild to check for dynamic resources. Only override if you want |
- to affect behaviour of all child lookups, rather than just dynamic |
- ones. |
- |
- This will check to see if I have a pre-registered child resource of the |
- given name, and call getChild if I do not. |
- """ |
- if self.children.has_key(path): |
- return self.children[path] |
- |
- return self.getChild(path, request) |
- |
- def getChildForRequest(self, request): |
- import warnings |
- warnings.warn("Please use module level getChildForRequest.", DeprecationWarning, 2) |
- return getChildForRequest(self, request) |
- |
- def putChild(self, path, child): |
- """Register a static child. |
- |
- You almost certainly don't want '/' in your path. If you |
- intended to have the root of a folder, e.g. /foo/, you want |
- path to be ''. |
- """ |
- self.children[path] = child |
- child.server = self.server |
- |
- def render(self, request): |
- """Render a given resource. See L{IResource}'s render method. |
- |
- I delegate to methods of self with the form 'render_METHOD' |
- where METHOD is the HTTP that was used to make the |
- request. Examples: render_GET, render_HEAD, render_POST, and |
- so on. Generally you should implement those methods instead of |
- overriding this one. |
- |
- render_METHOD methods are expected to return a string which |
- will be the rendered page, unless the return value is |
- twisted.web.server.NOT_DONE_YET, in which case it is this |
- class's responsibility to write the results to |
- request.write(data), then call request.finish(). |
- |
- Old code that overrides render() directly is likewise expected |
- to return a string or NOT_DONE_YET. |
- """ |
- m = getattr(self, 'render_' + request.method, None) |
- if not m: |
- from twisted.web.server import UnsupportedMethod |
- raise UnsupportedMethod(getattr(self, 'allowedMethods', ())) |
- return m(request) |
- |
- def render_HEAD(self, request): |
- """Default handling of HEAD method. |
- |
- I just return self.render_GET(request). When method is HEAD, |
- the framework will handle this correctly. |
- """ |
- return self.render_GET(request) |
- |
- |
-#t.w imports |
-#This is ugly, I know, but since error.py directly access resource.Resource |
-#during import-time (it subclasses it), the Resource class must be defined |
-#by the time error is imported. |
-import error |