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 <h2>Cookie</h2> 59 <form method="GET"> 60 <p>Name specified: <input name="name" value="%s"/></p> 61 <p>Value found: <input name="value" value="%s"/></p> 62 <p><input name="add" type="submit" value="Add..."/><input name="delete" type="submit" value="Delete..."/></p> 63 </form> 64 </body> 65 </html> 66 """ % ( 67 message, 68 self._format_cookies(trans.get_cookies()), 69 cookie_name, 70 cookie_value, 71 )) 72 73 def _format_cookies(self, d): 74 return "".join([ 75 "<dt>%s</dt><dd>%s</dd>" % (key, value.value) 76 for key, value in d.items() 77 ]) 78 79 def _format_list(self, l): 80 return "".join([ 81 "<li>%s</li>" % value 82 for value in l 83 ]) 84 85 # vim: tabstop=4 expandtab shiftwidth=4