code: def read_http(self, length):
          
          if length is None:
              length = len(self)
  
          packet = self._file.read(length)
          try:
              header, body = packet.split(b'\r\n\r\n', 1)
          except ValueError:
              raise ProtocolError('HTTP: invalid format', quiet=True)
  
          header_unpacked, http_receipt = self._read_http_header(header)
          body_unpacked = self._read_http_body(body) or None
  
          http = dict(
              receipt=http_receipt,
              header=header_unpacked,
              body=body_unpacked,
              raw=dict(
                  header=header,
                  body=body,
                  packet=self._read_packet(length),
              ),
          )
          self.__receipt__ = http_receipt
  
          return http
docs: Read Hypertext Transfer Protocol (HTTP/1.*).
  
          Structure of HTTP/1.* packet [RFC 7230]:
              HTTP-message    :==:    start-line
                                      *( header-field CRLF )
                                      CRLF
                                      [ message-body ]