(data, content_length)
return content_length, data, content_length_unidentified
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)
Gets the Content-Length value and start capturing request body.
Gets the Content - Length value and start capturing request body .
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
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