1 #!/usr/bin/env python 2 3 "A simple application for test purposes." 4 5 import WebStack.Generic 6 7 class SimpleResource: 8 9 "A simple resource." 10 11 def respond(self, trans): 12 trans.set_content_type(WebStack.Generic.ContentType("text/html", "utf-8")) 13 14 # Get some information. 15 16 out = trans.get_response_stream() 17 if trans.get_content_type(): 18 content_type = trans.get_content_type().media_type 19 charset = trans.get_content_type().charset 20 else: 21 content_type, charset = None, None 22 23 # Use Unicode strings for correct character encoding. 24 25 out.write(u""" 26 <html> 27 <head> 28 <title>Simple Example</title> 29 </head> 30 <body> 31 <h1>Test</h1> 32 <ul> 33 <li>Path: %s</li> 34 <li>Path without query: %s</li> 35 <li>Path info: %s</li> 36 <li>Virtual path info: %s</li> 37 <li>Processed virtual path info: %s</li> 38 <li>Query string: %s</li> 39 <li>Server name: %s</li> 40 <li>Server port: %s</li> 41 <li>Request method: %s</li> 42 <li>User: %s</li> 43 <li>Content type: %s</li> 44 <li>Charset: %s</li> 45 <li>Headers: 46 <dl> 47 %s 48 </dl> 49 </li> 50 <li>User-Agent: 51 <ul> 52 %s 53 </ul> 54 </li> 55 <li>user-agent: 56 <ul> 57 %s 58 </ul> 59 </li> 60 <li>Fields from path: 61 <ul> 62 %s 63 </ul> 64 </li> 65 <li>Fields from body: 66 <ul> 67 %s 68 </ul> 69 </li> 70 <li>Fields from path and body: 71 <ul> 72 %s 73 </ul> 74 </li> 75 <li>Cookies: 76 <ul> 77 %s 78 </ul> 79 </li> 80 </ul> 81 </body> 82 </html> 83 """ % ( 84 trans.get_path(), 85 trans.get_path_without_query(), 86 trans.get_path_info(), 87 trans.get_virtual_path_info(), 88 trans.get_processed_virtual_path_info(), 89 trans.get_query_string(), 90 trans.get_server_name(), 91 trans.get_server_port(), 92 trans.get_request_method(), 93 trans.get_user(), 94 content_type, 95 charset, 96 self._format_dict(trans.get_headers()), 97 self._format_list(trans.get_header_values("User-Agent")), 98 self._format_list(trans.get_header_values("user-agent")), 99 self._format_fields(trans.get_fields_from_path()), 100 self._format_fields(trans.get_fields_from_body()), 101 self._format_fields(trans.get_fields()), 102 self._format_cookies(trans.get_cookies()), 103 )) 104 105 def _format_dict(self, d): 106 return "".join([ 107 "<dt>%s</dt><dd>%s</dd>" % (key, value) 108 for key, value in d.items() 109 ]) 110 111 def _format_fields(self, d): 112 return "".join([ 113 "<li>%s<ul>%s</ul></li>" % (key, self._format_list(value)) 114 for key, value in d.items() 115 ]) 116 117 def _format_cookies(self, d): 118 return "".join([ 119 "<dt>%s</dt><dd>%s</dd>" % (key, value.value) 120 for key, value in d.items() 121 ]) 122 123 def _format_list(self, l): 124 return "".join([ 125 "<li>%s</li>" % (value or "<em>empty</em>") 126 for value in l 127 ]) 128 129 # vim: tabstop=4 expandtab shiftwidth=4