betamax
betamax copied to clipboard
Gzip Content-Encoding workaround
Hi, @MarekSuchanek was recently hit by the fact that some content is recorded Gziped and base64 encoded. It is hard to parse the response in a hook to hide sensitive data, if the sensitive data is hidden in a binary blob.
In the docs, it says:
There is, at the present moment, no way to configure this so that this does not happen and because of the way that Betamax works, you can not remove the Content-Encoding header to prevent this from happening.
However (with pytest fixture) simply doing:
betemax_session.headers.update({'accept-encoding': 'identity'})
Will bypass the problem.
I was about to propose a PR to the docs, but I better discuss it first with you before making a patch. The text at the end of the section might go like this:
You may, however, modify the request headers to indicate that you don't accept gzipped content:
session = requests.Session()
session.headers.update({'accept-encoding': 'identity'})
recorder = betamax.Betamax(session, ...)
...
Comments?
Can confirm, this is a useful trick for having reader cassettes.
I suppose the risk is that the endpoint ignores or rejects the identity set-encoding header?
Well I can mention that risk as well.
Be aware that some endpoints may ignore or reject the identity set-encoding header.