webservice.py 777 B

123456789101112131415161718192021222324252627282930313233
  1. '''
  2. Connections to parc web-services
  3. '''
  4. from _io import BytesIO
  5. import logging
  6. import urllib.request
  7. from lxml import etree # @UnresolvedImport
  8. from core.pde import PDE_WS_URL
  9. logger = logging.getLogger("webservice")
  10. class GfWebservice():
  11. """ Parser for the pde's web service """
  12. def __init__(self, name):
  13. self._url = "{}/{}".format(PDE_WS_URL, name)
  14. self._data = None
  15. @property
  16. def url(self):
  17. return self._url
  18. def parse(self):
  19. logger.info("Request data from %s", self._url)
  20. self._data = urllib.request.urlopen(self._url).read()
  21. def __iter__(self):
  22. if self._data is None:
  23. self.parse()
  24. return (elt.attrib for _, elt in etree.iterparse(BytesIO(self._data)) if elt.attrib)