code: def build_environ(self, sock_file, conn):
          
          # Grab the request line
          request = self.read_request_line(sock_file)
  
          # Copy the Base Environment
          environ = self.base_environ.copy()
  
          # Grab the headers
          for k, v in self.read_headers(sock_file).items():
              environ[str('HTTP_'+k)] = v
  
          # Add CGI Variables
          environ['REQUEST_METHOD'] = request['method']
          environ['PATH_INFO'] = request['path']
          environ['SERVER_PROTOCOL'] = request['protocol']
          environ['SERVER_PORT'] = str(conn.server_port)
          environ['REMOTE_PORT'] = str(conn.client_port)
          environ['REMOTE_ADDR'] = str(conn.client_addr)
          environ['QUERY_STRING'] = request['query_string']
          if 'HTTP_CONTENT_LENGTH' in environ:
              environ['CONTENT_LENGTH'] = environ['HTTP_CONTENT_LENGTH']
          if 'HTTP_CONTENT_TYPE' in environ:
              environ['CONTENT_TYPE'] = environ['HTTP_CONTENT_TYPE']
  
          # Save the request method for later
          self.request_method = environ['REQUEST_METHOD']
  
          # Add Dynamic WSGI Variables
          if conn.ssl:
              environ['wsgi.url_scheme'] = 'https'
              environ['HTTPS'] = 'on'
          else:
              environ['wsgi.url_scheme'] = 'http'
  
          if environ.get('HTTP_TRANSFER_ENCODING', '') == 'chunked':
              environ['wsgi.input'] = ChunkedReader(sock_file)
          else:
              environ['wsgi.input'] = sock_file
  
          return environ
docs: Build the execution environment.