]> git.openstreetmap.org Git - nominatim.git/blob - src/nominatim_db/utils/url_utils.py
Merge remote-tracking branch 'upstream/master'
[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  # noqa
11 import logging
12 import urllib.request as urlrequest
13
14 from ..version import NOMINATIM_VERSION
15
16 LOG = logging.getLogger()
17
18
19 def get_url(url: str) -> str:
20     """ Get the contents from the given URL and return it as a UTF-8 string.
21
22         This version makes sure that an appropriate user agent is sent.
23     """
24     headers = {"User-Agent": f"Nominatim/{NOMINATIM_VERSION!s}"}
25
26     try:
27         request = urlrequest.Request(url, headers=headers)
28         with urlrequest.urlopen(request) as response:  # type: IO[bytes]
29             return response.read().decode('utf-8')
30     except Exception:
31         LOG.fatal('Failed to load URL: %s', url)
32         raise