A "break" at the end of the "if" statement will not hurt and avoid checking unnecessary headers.

Best regards

On Sat, Apr 3, 2010 at 02:14, Daniel Rodriguez <danjrod@gmail.com> wrote:
Hi Jeff et al,

If I am not wrong (I may have missed a configuration option), suds is not using or requesting gzip compression.

I have added a few lines and tested at least requesting and accepting gzip compression. My changes have been trivial and this could be possibly added as an option to suds.

The changes I have made (against 3.9):

File: suds/transport/http.py:

Extra imports:

import gzip
import StringIO

Class: HttpTransport
Method: send

Added:

After:
  • headers = request.headers
added the following line
  • headers.update([('Accept-Encoding', 'gzip')])
Changed:
  • result = Reply(200, fp.headers.dict, fp.read())
to
  • replydata = fp.read()
  • for header in fp.headers.dict.keys():
  •      if header.lower() == 'content-encoding' and fp.headers.dict[header] == 'gzip':
  •          replydatacompressedstream = StringIO.StringIO(replydata)
  •          gzipper = gzip.GzipFile(fileobj=replydatacompressedstream)
  •          replydata = gzipper.read()
  • result = Reply(200, fp.headers.dict, replydata)
Best regards

Daniel