webservice.py 798 B

12345678910111213141516171819202122232425262728293031323334
  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. _url = PDE_WS_URL
  13. def __init__(self, name):
  14. self._url = "{}/{}".format(self._url, name)
  15. self._data = None
  16. @property
  17. def url(self):
  18. return self._url
  19. def parse(self):
  20. logger.info("Request data from %s", self._url)
  21. self._data = urllib.request.urlopen(self._url).read()
  22. def __iter__(self):
  23. if self._data is None:
  24. self.parse()
  25. return (elt.attrib for _, elt in etree.iterparse(BytesIO(self._data)) if elt.attrib)