summaryrefslogtreecommitdiffstats
path: root/openstack/common/middleware/base.py
diff options
context:
space:
mode:
authorDoug Hellmann <doug.hellmann@dreamhost.com>2013-05-29 19:49:29 -0400
committerDoug Hellmann <doug.hellmann@dreamhost.com>2013-06-07 12:42:52 -0400
commit39c17cb13e005894c66daadc7317ff3d57fe2fd7 (patch)
treed34e4a1fabe9e69983554b1b2655a045e1d2ea22 /openstack/common/middleware/base.py
parent106376d59f9a25fef94baf413316b22c7d4218d2 (diff)
downloadoslo-39c17cb13e005894c66daadc7317ff3d57fe2fd7.tar.gz
oslo-39c17cb13e005894c66daadc7317ff3d57fe2fd7.tar.xz
oslo-39c17cb13e005894c66daadc7317ff3d57fe2fd7.zip
Move wsgi module to deprecated package
As we are planning to deprecate the wsgi module, move it out of the main openstack/common folder to the new "deprecated" folder. Move some of the middleware classes into the middleware package, since those are still useful and should be maintained. There's still work to do to remove the dependency of the size limit middleware on the Request class in the now deprecated wsgi module. Refer to the mailing list thread at http://lists.openstack.org/pipermail/openstack-dev/2013-May/009666.html for additional details. Change-Id: I05ff583ef37174835393905a3066390f400ffdcf Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
Diffstat (limited to 'openstack/common/middleware/base.py')
-rw-r--r--openstack/common/middleware/base.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/openstack/common/middleware/base.py b/openstack/common/middleware/base.py
new file mode 100644
index 0000000..624a391
--- /dev/null
+++ b/openstack/common/middleware/base.py
@@ -0,0 +1,62 @@
+# Copyright 2011 OpenStack Foundation.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+"""Base class(es) for WSGI Middleware."""
+
+import webob.dec
+
+
+class Middleware(object):
+ """
+ Base WSGI middleware wrapper. These classes require an application to be
+ initialized that will be called next. By default the middleware will
+ simply call its wrapped app, or you can override __call__ to customize its
+ behavior.
+ """
+
+ @classmethod
+ def factory(cls, global_conf, **local_conf):
+ """
+ Factory method for paste.deploy
+ """
+
+ def filter(app):
+ return cls(app)
+
+ return filter
+
+ def __init__(self, application):
+ self.application = application
+
+ def process_request(self, req):
+ """
+ Called on each request.
+
+ If this returns None, the next application down the stack will be
+ executed. If it returns a response then that response will be returned
+ and execution will stop here.
+ """
+ return None
+
+ def process_response(self, response):
+ """Do whatever you'd like to the response."""
+ return response
+
+ @webob.dec.wsgify
+ def __call__(self, req):
+ response = self.process_request(req)
+ if response:
+ return response
+ response = req.get_response(self.application)
+ return self.process_response(response)