You are here

function advagg_relocate_uncompress_data in Advanced CSS/JS Aggregation 7.2

Decompress the data.

Parameters

object $response: Response from http request.

Return value

bool FALSE if something went wrong.

1 call to advagg_relocate_uncompress_data()
advagg_relocate_try_failures_again in advagg_relocate/advagg_relocate.advagg.inc
Detect failures and try again.

File

advagg_relocate/advagg_relocate.advagg.inc, line 589
Advanced aggregation relocate module.

Code

function advagg_relocate_uncompress_data(&$response) {

  // Uncompress.
  if (!empty($response->headers['content-encoding']) && !empty($response->data) && (!isset($response->chunk_size) || !empty($response->headers['content-length']) && $response->headers['content-length'] == strlen($response->data)) && ($response->headers['content-encoding'] === 'gzip' || $response->headers['content-encoding'] === 'deflate' || $response->headers['content-encoding'] === 'br')) {

    // Do the first level of decoding if not already done.
    if ($response->headers['content-encoding'] === 'gzip') {
      $chunk = @gzinflate(substr($response->data, 10));
    }
    elseif ($response->headers['content-encoding'] === 'deflate') {
      $chunk = @gzinflate($response->data);
    }
    elseif ($response->headers['content-encoding'] === 'br' && is_callable('brotli_uncompress')) {
      $chunk = @brotli_uncompress($response->data);
    }
    if (isset($chunk)) {
      if ($chunk !== FALSE) {
        $response->data = $chunk;
      }
      else {
        return FALSE;
      }
    }
  }
  return TRUE;
}