misc: use legacy urls to call up to date urls (#63237)
gitea-wip/wcs/pipeline/head Build started...
Details
gitea-wip/wcs/pipeline/head Build started...
Details
This commit is contained in:
parent
084eeef21a
commit
0da50a984b
|
@ -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()
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue