Logo Search packages:      
Sourcecode: calibre version File versions  Download package


00001 """GAE specific URL reading functions"""
__all__ = ['_defaultFetcher']
__docformat__ = 'restructuredtext'
__version__ = '$Id: tokenize2.py 1547 2008-12-10 20:42:26Z cthedot $'

# raises ImportError of not on GAE
from google.appengine.api import urlfetch
import cgi
import errorhandler
import util

log = errorhandler.ErrorHandler()

00014 def _defaultFetcher(url):
    uses GoogleAppEngine (GAE)
        fetch(url, payload=None, method=GET, headers={}, allow_truncated=False)

            The body content of the response.
            True if the allow_truncated parameter to fetch() was True and
            the response exceeded the maximum response size. In this case,
            the content attribute contains the truncated response.
            The HTTP status code.
            The HTTP response headers, as a mapping of names to values.

        exception InvalidURLError()
            The URL of the request was not a valid URL, or it used an
            unsupported method. Only http and https URLs are supported.
        exception DownloadError()
            There was an error retrieving the data.

            This exception is not raised if the server returns an HTTP
            error code: In that case, the response data comes back intact,
            including the error code.

        exception ResponseTooLargeError()
            The response data exceeded the maximum allowed size, and the
            allow_truncated parameter passed to fetch() was False.
    #from google.appengine.api import urlfetch
        r = urlfetch.fetch(url, method=urlfetch.GET)
    except urlfetch.Error, e:
        log.warn(u'Error opening url=%r: %s' % (url, e),
        if r.status_code == 200:
            # find mimetype and encoding
            mimetype = 'application/octet-stream'
                mimetype, params = cgi.parse_header(r.headers['content-type'])
                encoding = params['charset']
            except KeyError:
                encoding = None
            if mimetype != u'text/css':
                log.error(u'Expected "text/css" mime type for url %r but found: %r' % 
                              (url, mimetype), error=ValueError)
            return encoding, r.content
            # TODO: 301 etc
            log.warn(u'Error opening url=%r: HTTP status %s' % 
                              (url, r.status_code), error=IOError)

Generated by  Doxygen 1.6.0   Back to index