in oss2/xml_utils.py [0:0]
def parse_routing_rule_redirect(redirect_node):
redirect_type = None
pass_query_string = None
replace_key_with = None
replace_key_prefix_with = None
proto = None
host_name = None
http_redirect_code = None
mirror_url = None
mirror_url_slave = None
mirror_url_probe = None
mirror_pass_query_string = None
mirror_check_md5 = None
mirror_follow_redirect = None
mirror_headers = None
# common args
redirect_type = _find_tag(redirect_node, 'RedirectType')
if redirect_node.find('PassQueryString') is not None:
pass_query_string = _find_bool(redirect_node, 'PassQueryString')
# External, AliCDN
if redirect_type in [REDIRECT_TYPE_EXTERNAL, REDIRECT_TYPE_ALICDN]:
if redirect_node.find('Protocol') is not None:
proto = _find_tag(redirect_node, 'Protocol')
if redirect_node.find('HostName') is not None:
host_name = _find_tag(redirect_node, 'HostName')
if redirect_node.find('HttpRedirectCode') is not None:
http_redirect_code = _find_int(redirect_node, 'HttpRedirectCode')
# External, AliCDN, Internal
if redirect_type in [REDIRECT_TYPE_EXTERNAL, REDIRECT_TYPE_ALICDN, REDIRECT_TYPE_INTERNAL]:
if redirect_node.find('ReplaceKeyWith') is not None:
replace_key_with = _find_tag(redirect_node, 'ReplaceKeyWith')
if redirect_node.find('ReplaceKeyPrefixWith') is not None:
replace_key_prefix_with = _find_tag(redirect_node, 'ReplaceKeyPrefixWith')
# Mirror
elif redirect_type == REDIRECT_TYPE_MIRROR:
if redirect_node.find('MirrorURL') is not None:
mirror_url = _find_tag(redirect_node, 'MirrorURL')
if redirect_node.find('MirrorURLSlave') is not None:
mirror_url_slave = _find_tag(redirect_node, 'MirrorURLSlave')
if redirect_node.find('MirrorURLProbe') is not None:
mirror_url_probe = _find_tag(redirect_node, 'MirrorURLProbe')
if redirect_node.find('MirrorPassQueryString') is not None:
mirror_pass_query_string = _find_bool(redirect_node, 'MirrorPassQueryString')
if redirect_node.find('MirrorCheckMd5') is not None:
mirror_check_md5 = _find_bool(redirect_node, 'MirrorCheckMd5')
if redirect_node.find('MirrorFollowRedirect') is not None:
mirror_follow_redirect = _find_bool(redirect_node, 'MirrorFollowRedirect')
mirror_headers = parse_mirror_headers(redirect_node.find('MirrorHeaders'))
redirect = Redirect(redirect_type=redirect_type, proto=proto, host_name=host_name, replace_key_with=replace_key_with,
replace_key_prefix_with=replace_key_prefix_with, http_redirect_code=http_redirect_code,
pass_query_string=pass_query_string, mirror_url=mirror_url,mirror_url_slave=mirror_url_slave,
mirror_url_probe=mirror_url_probe, mirror_pass_query_string=mirror_pass_query_string,
mirror_follow_redirect=mirror_follow_redirect, mirror_check_md5=mirror_check_md5,
mirror_headers=mirror_headers)
return redirect