'Create a Request object using environ.'

def run(self):

    env = self.environ.get
    local = httputil.Host('', int((env('SERVER_PORT', 80) or (-1))), env('SERVER_NAME', ''))
    remote = httputil.Host(env('REMOTE_ADDR', ''), int((env('REMOTE_PORT', (-1)) or (-1))), env('REMOTE_HOST', ''))
    scheme = env('wsgi.url_scheme')
    sproto = env('ACTUAL_SERVER_PROTOCOL', 'HTTP/1.1')
    (request, resp) = self.cpapp.get_serving(local, remote, scheme, sproto)
    request.login = (env('LOGON_USER') or env('REMOTE_USER') or None)
    request.multithread = self.environ['wsgi.multithread']
    request.multiprocess = self.environ['wsgi.multiprocess']
    request.wsgi_environ = self.environ
    request.prev = env('cherrypy.previous_request', None)
    meth = self.environ['REQUEST_METHOD']
    path = httputil.urljoin(self.environ.get('SCRIPT_NAME', ''), self.environ.get('PATH_INFO', ''))
    qs = self.environ.get('QUERY_STRING', '')
    if py3k:
        old_enc = self.environ.get('wsgi.url_encoding', 'ISO-8859-1')
        new_enc = self.cpapp.find_config(self.environ.get('PATH_INFO', ''), 'request.uri_encoding', 'utf-8')
        if (new_enc.lower() != old_enc.lower()):
            try:
                u_path = path.encode(old_enc).decode(new_enc)
                u_qs = qs.encode(old_enc).decode(new_enc)
            except (UnicodeEncodeError, UnicodeDecodeError):
                pass
            else:
                path = u_path
                qs = u_qs
    rproto = self.environ.get('SERVER_PROTOCOL')
    headers = self.translate_headers(self.environ)
    rfile = self.environ['wsgi.input']
    request.run(meth, path, qs, rproto, headers, rfile)
