Esempio n. 1
0
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]
Esempio n. 2
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)
Esempio n. 3
0
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]
Esempio n. 4
0
 def open(self, request):
     self.addcredentials(request)
     return  HttpTransport.open(self, request)
Esempio n. 5
0
 def open(self, request):
     self.addcredentials(request)
     return HttpTransport.open(self, request)
Esempio n. 6
0
 def open(self, request):
     return  HttpTransport.open(self, request)
 def open(self, request):
     return HttpTransport.open(self, request)
Esempio n. 8
0
 def open(self, request, timeout=None):
     self.addcredentials(request)
     return HttpTransport.open(self, request, timeout)