Source code for pandasdmx.source.abs
import re
from . import Source as BaseSource
re_500 = re.compile(r"(An error has occurred)\.")
[docs]class Source(BaseSource):
_id = 'ABS'
[docs] def handle_response(self, response, content):
"""Handle ABS' own text/html error page for some endpoints."""
ctype = response.headers.get('content-type', '')
if 'text/html' in ctype:
buf = ''
while True:
chunk = content.read().decode()
if len(chunk) == 0:
break
buf += chunk
match = re_500.search(buf)
if match:
# Overwrite the original response
response.reason, = match.groups()
response.status_code = 500
response.raise_for_status()
raise NotImplementedError