From 7ed88fd0f3cf189bb4c3b1b8f68d3f184ec50595 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Mon, 26 Jan 2009 15:36:53 +0000 Subject: [PATCH] added Content-Disposition encoding discovery to ResponseTypes --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40773 --- .../trunk/scrapy/core/downloader/responsetypes.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/scrapy/trunk/scrapy/core/downloader/responsetypes.py b/scrapy/trunk/scrapy/core/downloader/responsetypes.py index 7a5921552..d15dddc3b 100644 --- a/scrapy/trunk/scrapy/core/downloader/responsetypes.py +++ b/scrapy/trunk/scrapy/core/downloader/responsetypes.py @@ -36,13 +36,22 @@ class ResponseTypes(object): mimetype = content_type.split(';')[0].strip().lower() return self.from_mimetype(mimetype) + def from_content_disposition(self, content_disposition): + try: + filename = content_disposition.split(';')[1].split('=')[1] + return self.from_filename(filename) + except IndexError: + return Response + def from_headers(self, headers): """Return the most appropiate Response class by looking at the HTTP headers""" + cls = Response if 'Content-Type' in headers: - return self.from_content_type(headers['Content-type'][0]) - else: - return Response + cls = self.from_content_type(headers['Content-type'][0]) + if cls is Response and 'Content-Disposition' in headers: + cls = self.from_content_disposition(headers['Content-Disposition'][0]) + return cls def from_filename(self, filename): """Return the most appropiate Response class from a file name"""