Create a Request object using environ.
(self)
| 296 | _cherrypy.log(traceback=True, severity=40) |
| 297 | |
| 298 | def run(self): |
| 299 | """Create a Request object using environ.""" |
| 300 | env = self.environ.get |
| 301 | |
| 302 | local = httputil.Host( |
| 303 | '', |
| 304 | int(env('SERVER_PORT', 80) or -1), |
| 305 | env('SERVER_NAME', ''), |
| 306 | ) |
| 307 | remote = httputil.Host( |
| 308 | env('REMOTE_ADDR', ''), |
| 309 | int(env('REMOTE_PORT', -1) or -1), |
| 310 | env('REMOTE_HOST', ''), |
| 311 | ) |
| 312 | scheme = env('wsgi.url_scheme') |
| 313 | sproto = env('ACTUAL_SERVER_PROTOCOL', 'HTTP/1.1') |
| 314 | request, resp = self.cpapp.get_serving(local, remote, scheme, sproto) |
| 315 | |
| 316 | # LOGON_USER is served by IIS, and is the name of the |
| 317 | # user after having been mapped to a local account. |
| 318 | # Both IIS and Apache set REMOTE_USER, when possible. |
| 319 | request.login = env('LOGON_USER') or env('REMOTE_USER') or None |
| 320 | request.multithread = self.environ['wsgi.multithread'] |
| 321 | request.multiprocess = self.environ['wsgi.multiprocess'] |
| 322 | request.wsgi_environ = self.environ |
| 323 | request.prev = env('cherrypy.previous_request', None) |
| 324 | |
| 325 | meth = self.environ['REQUEST_METHOD'] |
| 326 | |
| 327 | path = httputil.urljoin( |
| 328 | self.environ.get('SCRIPT_NAME', ''), |
| 329 | self.environ.get('PATH_INFO', ''), |
| 330 | ) |
| 331 | qs = self.environ.get('QUERY_STRING', '') |
| 332 | |
| 333 | path, qs = self.recode_path_qs(path, qs) or (path, qs) |
| 334 | |
| 335 | rproto = self.environ.get('SERVER_PROTOCOL') |
| 336 | headers = self.translate_headers(self.environ) |
| 337 | rfile = self.environ['wsgi.input'] |
| 338 | request.run(meth, path, qs, rproto, headers, rfile) |
| 339 | |
| 340 | headerNames = { |
| 341 | 'HTTP_CGI_AUTHORIZATION': 'Authorization', |
no test coverage detected