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