c8cf8c01d547160ed0498110f97cb9d528465c8d
[uzbl-mobile] / examples / data / uzbl / scripts / cookies.py
1 #!/usr/bin/env python
2
3 import cookielib, sys, os, urllib2
4
5 class FakeRequest:
6     def __init__(self, argv):
7         self.argv = argv
8         self.cookies = None
9         if len(self.argv) == 12:
10             self.cookies = self.argv[11]
11     def get_full_url(self):
12         #TODO: this is a hack, fix in uzbl.c!
13         u = self.get_host()+self.argv[10]
14         if self.argv[6].startswith('https'):
15             u = 'https://'+u
16         else:
17             u = 'http://'+u
18         return u
19     def get_host(self):
20         return self.argv[9]
21     def get_type(self):
22         return self.get_full_url().split(':')[0]
23     def is_unverifiable(self):
24         return False
25     def get_origin_req_host(self):
26         return self.argv[9]
27     def has_header(self, header):
28         if header == 'Cookie':
29             return self.cookies!=None
30     def get_header(self, header_name, default=None):
31         if header_name == 'Cookie' and self.cookies:
32             return self.cookies
33         else:
34             return default
35     def header_items(self):
36         if self.cookies:
37             return [('Cookie',self.cookies)]
38         else:
39             return []
40     def add_unredirected_header(self, key, header):
41         if key == 'Cookie':
42             self.cookies = header
43
44 class FakeHeaders:
45     def __init__(self, argv):
46         self.argv = argv
47     def getallmatchingheaders(self, header):
48         if header == 'Set-Cookie' and len(self.argv) == 12:
49             return ['Set-Cookie: '+self.argv[11]]
50         else:
51             return []
52     def getheaders(self, header):
53         if header == 'Set-Cookie' and len(self.argv) == 12:
54             return [self.argv[11]]
55         else:
56             return []
57 class FakeResponse:
58     def __init__(self, argv):
59         self.argv = argv
60     def info(self):
61         return FakeHeaders(self.argv)
62
63 if __name__ == '__main__':
64     if 'XDG_DATA_HOME' in os.environ.keys() and os.environ['XDG_DATA_HOME']:
65         jar = cookielib.MozillaCookieJar(
66           os.path.join(os.environ['XDG_DATA_HOME'],'uzbl/cookies.txt'))
67     else:
68         jar = cookielib.MozillaCookieJar(
69           os.path.join(os.environ['HOME'],'.local/share/uzbl/cookies.txt'))
70     try:
71         jar.load()
72     except:
73         pass
74
75     req = FakeRequest(sys.argv)
76
77     action = sys.argv[8]
78
79     if action == 'GET':
80         jar.add_cookie_header(req)
81         if req.cookies:
82             print req.cookies
83     elif action == 'PUT':
84         res = FakeResponse(sys.argv)
85         jar.extract_cookies(res,req)
86         jar.save(ignore_discard=True) # save session cookies too
87         #jar.save() # save everything but session cookies