# Decode Compressed Response

When the `:decode_compressed_response` option is set to a truthy value, VCR will decompress "gzip" and "deflate" response bodies before recording. This ensures that these interactions become readable and editable after being serialized.

This option should be avoided if the actual decompression of response bodies is part of the functionality of the library or app being tested.

## Background ()

*Given* a file named "decompress.rb" with:

```
require 'zlib'
require 'stringio'

$server = start_sinatra_app do
  get('/') {
    content = 'The quick brown fox jumps over the lazy dog'
    io = StringIO.new

    writer = Zlib::GzipWriter.new(io)
    writer << content
    writer.close

    headers['Content-Encoding'] = 'gzip'
    io.string
  }
end

require 'vcr'

VCR.configure do |c|
  c.cassette_library_dir = 'cassettes'
  c.hook_into :webmock
  c.default_cassette_options = { :serialize_with => :syck }
end
```

## The option is not set by default

*When* I append to file "decompress.rb":

```
VCR.use_cassette(:decompress) do
  Net::HTTP.start('localhost', $server.port) do |http|
    http.get('/', 'accept-encoding' => 'identity')
  end
end
```

*And* I run `ruby decompress.rb`

*Then* the file "cassettes/decompress.yml" should contain a YAML fragment like:

```
Content-Encoding:
- gzip
```

## The option is enabled

*When* I append to file "decompress.rb":

```
VCR.use_cassette(:decompress, :decode_compressed_response => true) do
  Net::HTTP.start('localhost', $server.port) do |http|
    http.get('/', 'accept-encoding' => 'identity')
  end
end
```

*And* I run `ruby decompress.rb`

*Then* the file "cassettes/decompress.yml" should contain a YAML fragment like:

```
Content-Length:
- '43'
```

*And* the file "cassettes/decompress.yml" should contain:

```
string: The quick brown fox jumps over the lazy dog
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nicolasiensen.gitbook.io/vcr/cassettes/decompress.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
