WpOrg\Requests

Requests::decode_chunked()protected staticWP 1.0

Decoded a chunked body as per RFC 2616

Method of the class: Requests{}

No Hooks.

Return

String. Decoded body

Usage

$result = Requests::decode_chunked( $data );
$data(string) (required)
Chunked body

Requests::decode_chunked() code WP 6.5.2

protected static function decode_chunked($data) {
	if (!preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', trim($data))) {
		return $data;
	}

	$decoded = '';
	$encoded = $data;

	while (true) {
		$is_chunked = (bool) preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', $encoded, $matches);
		if (!$is_chunked) {
			// Looks like it's not chunked after all
			return $data;
		}

		$length = hexdec(trim($matches[1]));
		if ($length === 0) {
			// Ignore trailer headers
			return $decoded;
		}

		$chunk_length = strlen($matches[0]);
		$decoded     .= substr($encoded, $chunk_length, $length);
		$encoded      = substr($encoded, $chunk_length + $length + 2);

		if (trim($encoded) === '0' || empty($encoded)) {
			return $decoded;
		}
	}

	// We'll never actually get down here
	// @codeCoverageIgnoreStart
}