1 #!/usr/bin/env python 2 3 "A test of cookies." 4 5 import WebStack.Generic 6 import time 7 8 class CookiesResource: 9 10 "A resource adding and removing cookies." 11 12 def respond(self, trans): 13 trans.set_content_type(WebStack.Generic.ContentType("text/html")) 14 15 # Get the fields and choose an action. 16 17 fields = trans.get_fields_from_path() 18 19 cookie_name_list = fields.get("name") or ["test"] 20 cookie_value_list = fields.get("value") or ["test"] 21 cookie_path_list = fields.get("path") or ["/"] 22 cookie_expires_list = fields.get("expires") or ["60"] 23 24 cookie_name = cookie_name_list[0] 25 cookie_value = cookie_value_list[0] 26 cookie_path = cookie_path_list[0] 27 cookie_expires = int(cookie_expires_list[0]) 28 29 message = "No action taken - use add or delete to change the cookies." 30 31 if fields.has_key("add"): 32 trans.set_cookie_value( 33 cookie_name, 34 cookie_value, 35 cookie_path, 36 time.time() + cookie_expires 37 ) 38 message = "Cookie %s added!" % cookie_name 39 40 elif fields.has_key("delete"): 41 trans.delete_cookie(cookie_name) 42 message = "Cookie %s deleted!" % cookie_name 43 44 # Get some information. 45 46 out = trans.get_response_stream() 47 out.write(""" 48 <html> 49 <head> 50 <title>Cookies Example</title> 51 </head> 52 <body> 53 <h1>Cookies</h1> 54 <p>%s</p> 55 <ul> 56 %s 57 </ul> 58 </body> 59 </html> 60 """ % ( 61 message, 62 self._format_dict(trans.get_cookies()), 63 )) 64 65 def _format_dict(self, d): 66 return "".join([ 67 "<dt>%s</dt><dd>%s</dd>" % (key, value) 68 for key, value in d.items() 69 ]) 70 71 def _format_list(self, l): 72 return "".join([ 73 "<li>%s</li>" % value 74 for value in l 75 ]) 76 77 # vim: tabstop=4 expandtab shiftwidth=4