diff options
author | shmel1k <shmel1k@ydb.tech> | 2023-11-26 18:16:14 +0300 |
---|---|---|
committer | shmel1k <shmel1k@ydb.tech> | 2023-11-26 18:43:30 +0300 |
commit | b8cf9e88f4c5c64d9406af533d8948deb050d695 (patch) | |
tree | 218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py2/twisted/web/rewrite.py | |
parent | 523f645a83a0ec97a0332dbc3863bb354c92a328 (diff) | |
download | ydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz |
add kikimr_configure
Diffstat (limited to 'contrib/python/Twisted/py2/twisted/web/rewrite.py')
-rw-r--r-- | contrib/python/Twisted/py2/twisted/web/rewrite.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/contrib/python/Twisted/py2/twisted/web/rewrite.py b/contrib/python/Twisted/py2/twisted/web/rewrite.py new file mode 100644 index 0000000000..b5366b4eb7 --- /dev/null +++ b/contrib/python/Twisted/py2/twisted/web/rewrite.py @@ -0,0 +1,52 @@ +# Copyright (c) Twisted Matrix Laboratories. +# See LICENSE for details. + +# +from twisted.web import resource + +class RewriterResource(resource.Resource): + + def __init__(self, orig, *rewriteRules): + resource.Resource.__init__(self) + self.resource = orig + self.rewriteRules = list(rewriteRules) + + def _rewrite(self, request): + for rewriteRule in self.rewriteRules: + rewriteRule(request) + + def getChild(self, path, request): + request.postpath.insert(0, path) + request.prepath.pop() + self._rewrite(request) + path = request.postpath.pop(0) + request.prepath.append(path) + return self.resource.getChildWithDefault(path, request) + + def render(self, request): + self._rewrite(request) + return self.resource.render(request) + + +def tildeToUsers(request): + if request.postpath and request.postpath[0][:1]=='~': + request.postpath[:1] = ['users', request.postpath[0][1:]] + request.path = '/'+'/'.join(request.prepath+request.postpath) + +def alias(aliasPath, sourcePath): + """ + I am not a very good aliaser. But I'm the best I can be. If I'm + aliasing to a Resource that generates links, and it uses any parts + of request.prepath to do so, the links will not be relative to the + aliased path, but rather to the aliased-to path. That I can't + alias static.File directory listings that nicely. However, I can + still be useful, as many resources will play nice. + """ + sourcePath = sourcePath.split('/') + aliasPath = aliasPath.split('/') + def rewriter(request): + if request.postpath[:len(aliasPath)] == aliasPath: + after = request.postpath[len(aliasPath):] + request.postpath = sourcePath + after + request.path = '/'+'/'.join(request.prepath+request.postpath) + return rewriter |