Created
June 7, 2012 11:47
-
-
Save anjackson/2888380 to your computer and use it in GitHub Desktop.
Making a Bottle app that routes to a proxy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import bottle | |
from wsgiproxy.app import WSGIProxyApp | |
# Remove "hop-by-hop" headers (as defined by RFC2613, Section 13) | |
# since they are not allowed by the WSGI standard. | |
FILTER_HEADERS = [ | |
'Connection', | |
'Keep-Alive', | |
'Proxy-Authenticate', | |
'Proxy-Authorization', | |
'TE', | |
'Trailers', | |
'Transfer-Encoding', | |
'Upgrade', | |
] | |
root = bottle.Bottle() | |
proxy_app = WSGIProxyApp("http://localhost/") | |
def wrap_start_response(start_response): | |
def wrapped_start_response(status, headers_out): | |
# Remove "hop-by-hop" headers | |
headers_out = [(k,v) for (k,v) in headers_out | |
if k not in FILTER_HEADERS] | |
return start_response(status, headers_out) | |
return wrapped_start_response | |
def wrapped_proxy_app(environ, start_response): | |
start_response = wrap_start_response(start_response) | |
return proxy_app(environ, start_response) | |
root.mount(wrapped_proxy_app,"/proxytest") | |
@root.route('/hello/:name') | |
def index(name='World'): | |
return '<b>Hello %s!</b>' % name | |
bottle.debug(True) | |
bottle.run(app=root, host='localhost', port=8080) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment