Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit119c1a2

Browse files
author
meig
committed
add cookie library original code
1 parentdeee08f commit119c1a2

File tree

9 files changed

+511
-0
lines changed

9 files changed

+511
-0
lines changed

‎pub/session/__init__.py‎

Whitespace-only changes.

‎pub/session/check.sh‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
python pylintcode.py> check.log
2+
python err_filter.py> err.log
3+
python warn_filter.py> warn.log
4+
gedit err.log
5+
gedit warn.log

‎pub/session/cookie_storage.py‎

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
importurlparse
2+
3+
classPathCookies(object):
4+
def__init__(self,domain,path):
5+
self.domain=domain
6+
self.path=path
7+
self.cookies= {}
8+
9+
classCookieStg(object):
10+
def__init__(self):
11+
# domain --> PathCookies list
12+
self.__domains= {}
13+
14+
defadd_cookie_pair(self,domain,path,pair):
15+
domain=domain.lower()
16+
path=path.lower()
17+
ifnotself.__domains.has_key(domain):
18+
self.__domains[domain]= []
19+
path_list=self.__domains[domain]
20+
exist=False
21+
foriteminpath_list:
22+
ifitem.path==path:
23+
item.cookies[pair[0]]=pair[1]
24+
exist=True
25+
break
26+
ifnotexist:
27+
path_cookies=PathCookies(domain,path)
28+
path_cookies.cookies[pair[0]]=pair[1]
29+
path_list.append(path_cookies)
30+
31+
defdel_cookie_item(self,domain,path,cookie_name):
32+
domain=domain.lower()
33+
path=path.lower()
34+
ifself.__domains.has_key(domain):
35+
path_list=self.__domains[domain]
36+
forpath_cookiesinpath_list:
37+
ifpath_cookies.path==path:
38+
ifpath_cookies.cookies.has_key(cookie_name):
39+
delpath_cookies.cookies[cookie_name]
40+
iflen(path_cookies.cookies)==0:
41+
delpath_cookies
42+
iflen(path_list)==0:
43+
delpath_list
44+
return
45+
defclear_domain(self,domain):
46+
domain=domain.lower()
47+
ifself.__domains.has_key(domain):
48+
delself.__domains[domain]
49+
50+
defclear(self):
51+
self.__domains.clear()
52+
53+
defadd_cookie_from_http_header(self,line,default_domain):
54+
segs=line.split(";")
55+
domain=default_domain
56+
path=None
57+
cookies= {}
58+
foriteminsegs:
59+
pos=item.find("=")
60+
ifpos>0andpos< (len(item)-1):
61+
left=item[:pos]
62+
left=left.strip()
63+
right=item[pos+1:]
64+
right=right.strip()
65+
ifleft.lower()=="domain":
66+
domain=right
67+
elifleft.lower()=="path":
68+
path=right
69+
elifleft.lower()=="expires":
70+
pass
71+
else:
72+
cookies[left]=right
73+
ifpathanddomain :
74+
path=path.lower()
75+
domain=domain.lower()
76+
ifself.__domains.has_key(domain):
77+
path_list=self.__domains[domain]
78+
exist=False
79+
forpath_cookiesinpath_list:
80+
ifpath_cookies.path==path:
81+
combine_map(path_cookies.cookies,cookies)
82+
exist=True
83+
ifnotexist:
84+
path_cookies=PathCookies(domain,path)
85+
path_cookies.cookies=cookies
86+
path_list.append(path_cookies)
87+
else:
88+
path_list= []
89+
path_cookies=PathCookies(domain,path)
90+
path_cookies.cookies=cookies
91+
path_list.append(path_cookies)
92+
self.__domains[domain]=path_list
93+
94+
defgen_header_cookies(self,request_url):
95+
parse_result=urlparse.urlparse(request_url)
96+
domain=parse_result.netloc.lower()
97+
request_path=parse_result.path.lower()
98+
domain_list= []
99+
domain_list.append(domain)
100+
pos=0
101+
whileTrue:
102+
pos=domain.find(".",pos)
103+
ifpos==-1:
104+
break
105+
domain_list.append(domain[pos:])
106+
domain_list.append(domain[pos+1:])
107+
pos+=1
108+
cookie_str=""
109+
foritemindomain_list:
110+
ifself.__domains.has_key(item):
111+
path_list=self.__domains[item]
112+
forpath_cookiesinpath_list:
113+
ifis_sub_path_i(path_cookies.path,request_path):
114+
cookie_set=translate_map_to_cookie(path_cookies.cookies)
115+
ifcookie_set!="":
116+
ifcookie_str!="":
117+
cookie_str+="; "
118+
cookie_str+=cookie_set
119+
returncookie_str
120+
121+
defprint_cookie(self):
122+
fordomaininself.__domains.keys():
123+
path_list=self.__domains[domain]
124+
print"%s:"%domain
125+
forpath_cookieinpath_list:
126+
print"\t%s:"%path_cookie.path
127+
forcookie_keyinpath_cookie.cookies.keys():
128+
print"\t\t%s=%s"% (cookie_key,path_cookie.cookies[cookie_key])
129+
130+
131+
defcombine_map(map1,map2):
132+
forkeyinmap2.keys():
133+
value=map2[key]
134+
map1[key]=value
135+
136+
deftranslate_map_to_cookie(cookie_dict):
137+
result=""
138+
forkeyincookie_dict.keys():
139+
value=cookie_dict[key]
140+
ifresult=="":
141+
result=" %s=%s"% (key,value)
142+
else:
143+
result+="; %s=%s"% (key,value)
144+
returnresult
145+
146+
147+
#ignore character case
148+
defis_sub_path_i(path_parent,path_test):
149+
count=len(path_parent)
150+
iflen(path_test)<count:
151+
returnFalse
152+
returnpath_test[:count]==path_parent
153+
154+
if__name__=="__main__":
155+
pass

‎pub/session/err_filter.py‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
defis_filepath(line_txt):
2+
# return "E:\\" == line_txt[:3]
3+
returnline_txt.find("************* Module")!=-1
4+
5+
defis_err_line(line_txt):
6+
ifis_filepath(line_txt):
7+
returnFalse
8+
returnline_txt[:3]=="E: "orline_txt[:2]=="E:"
9+
10+
defis_record_line(line_txt):
11+
ifnotline_txtorlen(line_txt)<3:
12+
returnFalse
13+
returnline_txt[1]==':'
14+
15+
16+
17+
if__name__=='__main__':
18+
file_handler=open("check.log","r")
19+
filename=None
20+
line=None
21+
whileTrue:
22+
line=file_handler.readline()
23+
ifnotline:
24+
break
25+
26+
ifis_filepath(line):
27+
filename=line
28+
continue
29+
ifis_err_line(line):
30+
iffilename:
31+
printfilename
32+
filename=None
33+
printline
34+
whileTrue:
35+
line=file_handler.readline()
36+
ifnotis_record_line(line)oris_err_line(line):
37+
printline
38+
continue
39+
elifis_filepath(line):
40+
filename=line
41+
break
42+
file_handler.close()

‎pub/session/pylintcode.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
importos
2+
3+
forfileinos.listdir("."):
4+
filename,ext=os.path.splitext(file)
5+
ifext==".py":
6+
cmdline="pylint %s"%file
7+
os.system(cmdline)

‎pub/session/session.py‎

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
importcookie_storage
2+
importtornado.httputil
3+
importtornado.httpclient
4+
importurlparse
5+
importcopy
6+
importurlparse
7+
8+
defget_domain(url):
9+
result=urlparse.urlparse(url)
10+
returnresult.netloc.lower()
11+
12+
defcreate_cookie_header(cookie):
13+
ifnotcookieorlen(cookie)==0:
14+
cookie_map= {}
15+
else:
16+
cookie_map= {"Cookie":cookie}
17+
returntornado.httputil.HTTPHeaders(cookie_map)
18+
19+
def_create_request(cookie_stg,url,method,headers,body,connect_timeout=10,request_timeout=10):
20+
cookie=cookie_stg.gen_header_cookies(url)
21+
req_headers=create_cookie_header(cookie)
22+
ifheaders:
23+
forkeyinheaders.keys():
24+
req_headers.add(key,headers[key])
25+
returntornado.httpclient.HTTPRequest(url,method,req_headers,body,None,None,None,connect_timeout,request_timeout)
26+
27+
classHandlerFilter(object):
28+
def__init__(self,handler,filter):
29+
self.__handler=handler
30+
self.__filter=filter
31+
defhandle_response(self,response,seq):
32+
self.__filter(response)
33+
self.__handler(response,seq)
34+
35+
36+
classSession(object):
37+
def__init__(self):
38+
self._cookie_stg=cookie_storage.CookieStg()
39+
40+
def_filter_response(self,response):
41+
headers=response.headers
42+
cookie_list=headers.get_list("set-cookie")
43+
domain=get_domain(response.request.url)
44+
ifcookie_list:
45+
forlineincookie_list:
46+
self._cookie_stg.add_cookie_from_http_header(line,domain)
47+
48+
deffetch(self,url,method,headers,body,connect_timeout=10,request_timeout=10):
49+
req=_create_request(self._cookie_stg,url,method,headers,body,connect_timeout,request_timeout)
50+
client=tornado.httpclient.HTTPClient()
51+
response=client.fetch(req)
52+
ifnotresponse.error:
53+
self._filter_response(response)
54+
ifresponse.codein (301,302,303,307):
55+
new_url=urlparse.urljoin(url,response.headers["Location"])
56+
returnself.fetch(new_url,method,headers,body,connect_timeout,request_timeout)
57+
returnresponse
58+
59+
defsend_form(self,action,method,data_map,connect_timeout=10,request_timeout=10):
60+
add_header= {"content-type":"application/x-www-form-urlencoded"}
61+
try:
62+
importurllib
63+
args=urllib.urlencode(data_map)
64+
exceptException,e:
65+
returnNone
66+
ifmethodin ("GET","get"):
67+
url="%s?%s"% (action,args)
68+
else:
69+
url=action
70+
returnself.fetch(url,method,add_header,args,connect_timeout,request_timeout)
71+
72+
defreport(self):
73+
self._cookie_stg.print_cookie()
74+
75+
classAsyncSession(Session):
76+
def__init__(self):
77+
self.__last_handler=None
78+
79+
classResponseFilter(object):
80+
def__init__(self,handler,filter):
81+
self.__handler=handler
82+
self.__filter=filter
83+
defhandle_response(self,response):
84+
ifnotresponse.error:
85+
self.__filter(response)
86+
ifresponse.codein (301,302,303,307):
87+
new_url=urlparse.urljoin(response.request.url,response.headers["Location"])
88+
new_req=copy.copy(response.request)
89+
new_req.url=new_url
90+
client=tornado.httpclient.AsyncHTTPClient()
91+
client.fetch(new_req,self.handle_response)
92+
return
93+
self.__handler(response)
94+
95+
deffetch(self,url,method,headers,body,response_handler,connect_timeout=10,request_timeout=10):
96+
req=_create_request(self._cookie_stg,url,method,headers,body,connect_timeout,request_timeout)
97+
client=tornado.httpclient.AsyncHTTPClient()
98+
handler=self.ResponseFilter(response_handler,self._filter_response)
99+
client.fetch(req,handler)
100+
returnTrue
101+
102+
defsend_form(self,action,method,data_map,reponse_handler,connect_timeout=10,request_timeout=10):
103+
add_header= {"content-type":"application/x-www-form-urlencoded"}
104+
try:
105+
importurllib
106+
args=urllib.urlencode(data_map)
107+
exceptException,e:
108+
returnFalse
109+
ifmethodin ("GET","get"):
110+
url="%s?%s"% (action,args)
111+
else:
112+
url=action
113+
self.fetch(url,method,add_header,args,reponse_handler,connect_timeout,request_timeout)
114+
returnTrue
115+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp