parameters: (data, content_length)
return_statement: return content_length, data, content_length_unidentified
docstring: Gets the Content-Length value and start capturing request body.
  
      Combines the data captured over the socket connection so far
      and looks for Content-Length value and the start of request body
  
      Following the HTTP request pattern as
      HEADERS\r\n\r\nBody, the \r\n\r\n is used to extract the
      body from the HTTP request. The original data List is overwritten
      to start capturing just the request body
  
      If both Content-Length and message body aren't discovered, the
      original values are returned.
  
      :param data: Data captured over socket connection
      :type data: List[AnyStr]
      :param content_length: Content-Length of the request body. Default is -1
      :type content_length: int
      :return content_length: Content-Length of the request body
      :return data: Data captured over socket connection
      :return content_length_unidentified: Boolean value whether Content-Length
                                           has been identified. Defaults to True
      :rtype: (int, List[AnyStr], bool)
docstring_summary: Gets the Content-Length value and start capturing request body.
docstring_tokens: Gets the Content - Length value and start capturing request body .
function: def _get_content_length_and_body(data, content_length):
      # type(List[AnyStr], int) -> int, List[AnyStr], bool
      """
      Gets the Content-Length value and start capturing request body.
  
      Combines the data captured over the socket connection so far
      and looks for Content-Length value and the start of request body
  
      Following the HTTP request pattern as
      HEADERS\r\n\r\nBody, the \r\n\r\n is used to extract the
      body from the HTTP request. The original data List is overwritten
      to start capturing just the request body
  
      If both Content-Length and message body aren't discovered, the
      original values are returned.
  
      :param data: Data captured over socket connection
      :type data: List[AnyStr]
      :param content_length: Content-Length of the request body. Default is -1
      :type content_length: int
      :return content_length: Content-Length of the request body
      :return data: Data captured over socket connection
      :return content_length_unidentified: Boolean value whether Content-Length
                                           has been identified. Defaults to True
      :rtype: (int, List[AnyStr], bool)
      """
      received_data = _combine_received_data(data)
      content_length_unidentified = True
      if (HTTP_BODY_DELIMITER in received_data and
              CONTENT_LENGTH in received_data):
          content_length = int(CONTENT_LENGTH_REGEX.findall(received_data)[0])
          received_data = received_data.split(
              HTTP_BODY_DELIMITER)[-1:][0]
          content_length_unidentified = False
          data = []
          data.append(received_data)
      return content_length, data, content_length_unidentified
function_tokens: def _get_content_length_and_body ( data , content_length ) : # type(List[AnyStr], int) -> int, List[AnyStr], bool received_data = _combine_received_data ( data ) content_length_unidentified = True if ( HTTP_BODY_DELIMITER in received_data and CONTENT_LENGTH in received_data ) : content_length = int ( CONTENT_LENGTH_REGEX . findall ( received_data ) [ 0 ] ) received_data = received_data . split ( HTTP_BODY_DELIMITER ) [ - 1 : ] [ 0 ] content_length_unidentified = False data = [ ] data . append ( received_data ) return content_length , data , content_length_unidentified