Skip to content

Commit 59b1f93

Browse files
author
meig
committed
fix session.py
1 parent 3069eec commit 59b1f93

File tree

4 files changed

+28
-15
lines changed

4 files changed

+28
-15
lines changed

pub/session/__init__.pyc

129 Bytes
Binary file not shown.

pub/session/cookie_storage.pyc

5.12 KB
Binary file not shown.

pub/session/session.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,24 @@ def _create_request(cookie_stg,url,method,headers,body,connect_timeout=10,reques
2020
if headers:
2121
for key in headers.keys():
2222
req_headers.add(key,headers[key])
23-
return tornado.httpclient.HTTPRequest(url,method,req_headers,body,None,None,connect_timeout,request_timeout)
23+
return tornado.httpclient.HTTPRequest(url,method,req_headers,body,None,None,connect_timeout,request_timeout,follow_redirects=False)
2424

25-
class HandlerFilter(object):
26-
def __init__(self,handler,filter):
27-
self.__handler = handler
28-
self.__filter = filter
29-
def handle_response(self,response,seq):
30-
self.__filter(response)
31-
self.__handler(response,seq)
25+
#class HandlerFilter(object):
26+
# def __init__(self,handler,filter):
27+
# self.__handler = handler
28+
# self.__filter = filter
29+
# def handle_response(self,response,seq):
30+
# self.__filter(response)
31+
# self.__handler(response,seq)
3232

3333

3434
class Session(object):
3535
def __init__(self):
3636
self._cookie_stg = cookie_storage.CookieStg()
3737

3838
def _filter_response(self,response):
39+
if not response:
40+
return
3941
headers = response.headers
4042
cookie_list = headers.get_list("set-cookie")
4143
domain = get_domain(response.request.url)
@@ -46,16 +48,25 @@ def _filter_response(self,response):
4648
def fetch(self,url,method,headers,body,connect_timeout=10,request_timeout=10):
4749
req = _create_request(self._cookie_stg,url,method,headers,body,connect_timeout,request_timeout)
4850
client = tornado.httpclient.HTTPClient()
49-
response = client.fetch(req)
50-
if not response.error:
51-
self._filter_response(response)
51+
try:
52+
response = client.fetch(req)
53+
except Exception,e:
54+
response = e.response
55+
if not response:
56+
return None
57+
self._filter_response(response)
5258
if response.code in (301, 302, 303, 307):
5359
new_url = urlparse.urljoin(url,response.headers["Location"])
5460
return self.fetch(new_url,method,headers,body,connect_timeout,request_timeout)
5561
return response
5662

57-
def send_form(self,action,method,data_map,connect_timeout=10,request_timeout=10):
58-
add_header = {"content-type":"application/x-www-form-urlencoded"}
63+
def send_form(self,action,method,data_map,add_header_=None,connect_timeout=10,request_timeout=10):
64+
if not add_header_:
65+
add_header = {}
66+
else:
67+
import copy
68+
add_header = copy.copy(add_header_)
69+
add_header["content-type"] = "application/x-www-form-urlencoded"
5970
try:
6071
import urllib
6172
args = urllib.urlencode(data_map)
@@ -97,8 +108,10 @@ def fetch(self,url,method,headers,body,response_handler,connect_timeout=10,reque
97108
client.fetch(req,handler.handle_response)
98109
return True
99110

100-
def send_form(self,action,method,data_map,reponse_handler,connect_timeout=10,request_timeout=10):
101-
add_header = {"content-type":"application/x-www-form-urlencoded"}
111+
def send_form(self,action,method,data_map,reponse_handler,add_header=None,connect_timeout=10,request_timeout=10):
112+
if not add_header:
113+
add_header = {}
114+
add_header["content-type"] = "application/x-www-form-urlencoded"
102115
try:
103116
import urllib
104117
args = urllib.urlencode(data_map)

pub/session/session.pyc

5.49 KB
Binary file not shown.

0 commit comments

Comments
 (0)