misc: use legacy urls to call up to date urls (#63237)
gitea-wip/wcs/pipeline/head Build started... Details

This commit is contained in:
Emmanuel Cazenave 2022-04-14 17:01:57 +02:00
parent 084eeef21a
commit 0da50a984b
2 changed files with 47 additions and 1 deletions

View File

@ -589,3 +589,43 @@ def test_http_request_global_settings(mock_request):
mock_request.assert_called_once_with(
'GET', 'https://example.com/', cert=None, data=None, headers={}, proxies=None, timeout=42
)
@mock.patch('requests.Session.request')
def test_http_request_url_switch(mock_request):
response = {'err': 0, 'data': []}
mock_json = mock.Mock(status_code=200)
mock_json.json.return_value = response
mock_request.return_value = mock_json
pub = create_temporary_pub()
pub.load_site_options()
from django.conf import settings
settings.REQUESTS_TIMEOUT = 28
_http_request('https://example.com/')
mock_request.assert_called_once_with(
'GET', 'https://example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28
)
mock_request.reset_mock()
pub.site_options.add_section('legacy-urls')
pub.site_options.set('legacy-urls', 'new.example.com', 'example.com,old.example.com')
pub.site_options.set('legacy-urls', 'old.example.com', 'new.example.com')
pub.site_options.set(
'legacy-urls',
'example.com',
'new.example.com',
)
_http_request('https://example.com/')
mock_request.assert_called_once_with(
'GET', 'https://new.example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28
)
mock_request.reset_mock()
_http_request('https://old.example.com/')
mock_request.assert_called_once_with(
'GET', 'https://new.example.com/', cert=None, data=None, headers={}, proxies=None, timeout=28
)
mock_request.reset_mock()

View File

@ -355,7 +355,8 @@ def _http_request(
url, method='GET', body=None, headers=None, cert_file=None, timeout=None, raise_on_http_errors=False
):
headers = headers or {}
get_publisher().reload_cfg()
pub = get_publisher()
pub.reload_cfg()
splitted_url = urllib.parse.urlsplit(url)
if splitted_url.scheme not in ('http', 'https'):
@ -364,6 +365,11 @@ def _http_request(
hostname = splitted_url.netloc
timeout = timeout or settings.REQUESTS_TIMEOUT
new_hostname = pub.get_site_option(hostname, 'legacy-urls')
if new_hostname:
hostname = new_hostname
url = splitted_url._replace(netloc=hostname).geturl()
if cert_file is None:
for url_prefix, cert in settings.REQUESTS_CERT.items():
if url.startswith(url_prefix):