| 72 | server_version = "WSGIServer" |
| 73 | |
| 74 | def get_environ(self): |
| 75 | env = self.server.base_environ.copy() |
| 76 | env['SERVER_PROTOCOL'] = self.request_version |
| 77 | env['SERVER_SOFTWARE'] = self.server_version |
| 78 | env['REQUEST_METHOD'] = self.command |
| 79 | if '?' in self.path: |
| 80 | path,query = self.path.split('?',1) |
| 81 | else: |
| 82 | path,query = self.path,'' |
| 83 | |
| 84 | env['PATH_INFO'] = urllib.parse.unquote(path, 'iso-8859-1') |
| 85 | env['QUERY_STRING'] = query |
| 86 | env['REMOTE_ADDR'] = self.client_address[0] |
| 87 | |
| 88 | if self.headers.get('content-type') is None: |
| 89 | env['CONTENT_TYPE'] = self.headers.get_content_type() |
| 90 | else: |
| 91 | env['CONTENT_TYPE'] = self.headers['content-type'] |
| 92 | |
| 93 | length = self.headers.get('content-length') |
| 94 | if length: |
| 95 | env['CONTENT_LENGTH'] = length |
| 96 | |
| 97 | for k, v in self.headers.items(): |
| 98 | k=k.replace('-','_').upper(); v=v.strip() |
| 99 | if k in env: |
| 100 | continue # skip content length, type,etc. |
| 101 | if 'HTTP_'+k in env: |
| 102 | env['HTTP_'+k] += ','+v # comma-separate multiple headers |
| 103 | else: |
| 104 | env['HTTP_'+k] = v |
| 105 | return env |
| 106 | |
| 107 | def get_stderr(self): |
| 108 | return sys.stderr |