class Parser: """ simple parser """ def __init__(self, transport=None): if transport is None: self.transport = HttpTransport() else: self.transport = transport def parse(self, file=None, url=None, string=None): """ parse a document """ handler = Handler() timer = metrics.Timer() timer.start() if file is not None: parse(file, handler) timer.stop() metrics.log.debug('sax (%s) duration: %s', file, timer) return handler.nodes[0] if url is not None: fp = self.transport.open(Request(url)) parse(fp, handler) timer.stop() metrics.log.debug('sax (%s) duration: %s', url, timer) return handler.nodes[0] if string is not None: parseString(string, handler) timer.stop() metrics.log.debug('%s\nsax duration: %s', string, timer) return handler.nodes[0]
def open(self, request): url = request.url if url.startswith('file:'): return HttpTransport.open(self, request) else: resp = self._session.get(url) resp.raise_for_status() return BytesIO(resp.content)
class Parser: """ sax parser """ @classmethod def saxparser(cls): p = make_parser() p.setFeature(feature_external_ges, 0) h = Handler() p.setContentHandler(h) return (p, h) def __init__(self, transport=None): if transport is None: self.transport = HttpTransport() else: self.transport = transport def parse(self, file=None, url=None, string=None): timer = metrics.Timer() timer.start() sax, handler = self.saxparser() if file is not None: sax.parse(file) timer.stop() metrics.log.debug('sax (%s) duration: %s', file, timer) return handler.nodes[0] if url is not None: fp = self.transport.open(Request(url)) sax.parse(fp) timer.stop() metrics.log.debug('sax (%s) duration: %s', url, timer) return handler.nodes[0] if string is not None: source = InputSource(None) source.setByteStream(StringIO(string)) sax.parse(source) timer.stop() metrics.log.debug('%s\nsax duration: %s', string, timer) return handler.nodes[0]
def open(self, request): self.addcredentials(request) return HttpTransport.open(self, request)
def open(self, request): return HttpTransport.open(self, request)
def open(self, request, timeout=None): self.addcredentials(request) return HttpTransport.open(self, request, timeout)