]> git.openstreetmap.org Git - nominatim.git/blob - src/nominatim_db/utils/url_utils.py
eb56f72ed3a9cf92c02619040e1a0801e12df9ee
[nominatim.git] / src / nominatim_db / utils / url_utils.py
1 # SPDX-License-Identifier: GPL-3.0-or-later
2 #
3 # This file is part of Nominatim. (https://nominatim.org)
4 #
5 # Copyright (C) 2024 by the Nominatim developer community.
6 # For a full list of authors see the git log.
7 """
8 Helper functions for accessing URL.
9 """
10 from typing import IO
11 import logging
12 import urllib.request as urlrequest
13
14 from ..version import NOMINATIM_VERSION
15
16 LOG = logging.getLogger()
17
18 def get_url(url: str) -> str:
19     """ Get the contents from the given URL and return it as a UTF-8 string.
20
21         This version makes sure that an appropriate user agent is sent.
22     """
23     headers = {"User-Agent": f"Nominatim/{NOMINATIM_VERSION!s}"}
24
25     try:
26         request = urlrequest.Request(url, headers=headers)
27         with urlrequest.urlopen(request) as response: # type: IO[bytes]
28             return response.read().decode('utf-8')
29     except Exception:
30         LOG.fatal('Failed to load URL: %s', url)
31         raise