aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
authorGravatar Dieter Plaetinck <dieter@plaetinck.be>2009-06-07 11:49:48 +0200
committerGravatar Dieter Plaetinck <dieter@plaetinck.be>2009-06-07 11:49:48 +0200
commit3335c42600834657da0dd945589ab8a6a9210a10 (patch)
treeca2bf5ea09350ddb34eba0f797ce48ec76d6948c /examples
parent3fafe96d7cefdeed6cc15bf6e44788fe3f1bae13 (diff)
add holizz' cookies.py
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/scripts/cookies.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/examples/scripts/cookies.py b/examples/scripts/cookies.py
new file mode 100755
index 0000000..3cc7eb0
--- /dev/null
+++ b/examples/scripts/cookies.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+import cookielib, sys, os, urllib2
+
+class FakeRequest:
+ def __init__(self, argv):
+ self.argv = argv
+ self.cookies = None
+ if len(self.argv) == 12:
+ self.cookies = self.argv[11]
+ def get_full_url(self):
+ #TODO: this is a hack, fix in uzbl.c!
+ u = self.get_host()+self.argv[10]
+ if self.argv[6].startswith('https'):
+ u = 'https://'+u
+ else:
+ u = 'http://'+u
+ return u
+ def get_host(self):
+ return self.argv[9]
+ def get_type(self):
+ return self.get_full_url().split(':')[0]
+ def is_unverifiable(self):
+ return False
+ def get_origin_req_host(self):
+ return self.argv[9]
+ def has_header(self, header):
+ if header == 'Cookie':
+ return self.cookies!=None
+ def get_header(self, header_name, default=None):
+ if header_name == 'Cookie' and self.cookies:
+ return self.cookies
+ else:
+ return default
+ def header_items(self):
+ if self.cookies:
+ return [('Cookie',self.cookies)]
+ else:
+ return []
+ def add_unredirected_header(self, key, header):
+ if key == 'Cookie':
+ self.cookies = header
+
+class FakeHeaders:
+ def __init__(self, argv):
+ self.argv = argv
+ def getallmatchingheaders(self, header):
+ if header == 'Set-Cookie' and len(self.argv) == 12:
+ return ['Set-Cookie: '+self.argv[11]]
+ else:
+ return []
+ def getheaders(self, header):
+ if header == 'Set-Cookie' and len(self.argv) == 12:
+ return [self.argv[11]]
+ else:
+ return []
+class FakeResponse:
+ def __init__(self, argv):
+ self.argv = argv
+ def info(self):
+ return FakeHeaders(self.argv)
+
+if __name__ == '__main__':
+ jar = cookielib.MozillaCookieJar(os.environ['XDG_DATA_HOME']+'/uzbl/cookies.txt')
+ try:
+ jar.load()
+ except:
+ pass
+
+ req = FakeRequest(sys.argv)
+
+ action = sys.argv[8]
+
+ if action == 'GET':
+ jar.add_cookie_header(req)
+ if req.cookies:
+ print req.cookies
+ elif action == 'PUT':
+ res = FakeResponse(sys.argv)
+ jar.extract_cookies(res,req)
+ jar.save(ignore_discard=True) # save session cookies too
+ #jar.save() # save everything but session cookies \ No newline at end of file