Forward browser request to the rp request

This commit is contained in:
Jérôme Schneider 2011-07-28 19:52:51 +02:00
parent 3861796033
commit e17161732b
1 changed files with 18 additions and 13 deletions

View File

@ -9,8 +9,11 @@ import sys
import traceback
from cgi import escape
from gevent.pywsgi import WSGIServer
from gevent.pywsgi import WSGIServer
#import poster.streaminghttp
#opener = poster.streaminghttp.register_openers()
drop_headers = ['transfer-encoding']
@ -50,16 +53,25 @@ class RequestApp(object):
def on_request(self, start_response):
# TODO: manage header and cookie modifications
print "on_request"
data = self.env['wsgi.input'].read()
if not data:
data = None
print data
print self.env
if self.env.get('QUERY_STRING'):
url = "http://" + self.config['remote_host'] + self.env['PATH_INFO'] + "?" + self.env['QUERY_STRING']
else:
url = "http://" + self.config['remote_host'] + self.env['PATH_INFO']
print url
req = urllib2.Request(url, data)
if self.env['REQUEST_METHOD'] == 'POST':
data = self.env['wsgi.input'].read()
req = urllib2.Request(url, data)
else:
req = urllib2.Request(url)
# Pass the browser headers to the request
for name in (name for name in self.env if name.startswith('HTTP_')):
value = self.env[name]
print name
if name != "HTTP_HOST" and name != "HTTP_REFERER":
name = name.split('HTTP_')[1].replace('_', '-')
req.add_header(name, value)
print req.headers
try:
response = urllib2.urlopen(req)
except Exception:
@ -81,13 +93,6 @@ class RequestApp(object):
for key, value in headers.items():
if key in drop_headers:
del headers[key]
if key == "set-cookie":
if self.config['remote_host'] in value:
value = value.replace(self.config['remote_host'], self.env['HTTP_HOST'])
headers[key] = value
print value
print "\n\n+++++++++++++++++++++++++++++++++++++"
print "Cookie : %s" % headers[key]
start_response('%d %s' % (code, status), headers.items())
return [data]