angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr obs-angle-addr = [CFWS] "<" obs-route addr-spec ">" [CFWS]
(value)
| 1734 | return obs_route, value[1:] |
| 1735 | |
| 1736 | def get_angle_addr(value): |
| 1737 | """ angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr |
| 1738 | obs-angle-addr = [CFWS] "<" obs-route addr-spec ">" [CFWS] |
| 1739 | |
| 1740 | """ |
| 1741 | angle_addr = AngleAddr() |
| 1742 | if value and value[0] in CFWS_LEADER: |
| 1743 | token, value = get_cfws(value) |
| 1744 | angle_addr.append(token) |
| 1745 | if not value or value[0] != '<': |
| 1746 | raise errors.HeaderParseError( |
| 1747 | "expected angle-addr but found '{}'".format(value)) |
| 1748 | angle_addr.append(ValueTerminal('<', 'angle-addr-start')) |
| 1749 | value = value[1:] |
| 1750 | # Although it is not legal per RFC5322, SMTP uses '<>' in certain |
| 1751 | # circumstances. |
| 1752 | if value and value[0] == '>': |
| 1753 | angle_addr.append(ValueTerminal('>', 'angle-addr-end')) |
| 1754 | angle_addr.defects.append(errors.InvalidHeaderDefect( |
| 1755 | "null addr-spec in angle-addr")) |
| 1756 | value = value[1:] |
| 1757 | return angle_addr, value |
| 1758 | try: |
| 1759 | token, value = get_addr_spec(value) |
| 1760 | except errors.HeaderParseError: |
| 1761 | try: |
| 1762 | token, value = get_obs_route(value) |
| 1763 | angle_addr.defects.append(errors.ObsoleteHeaderDefect( |
| 1764 | "obsolete route specification in angle-addr")) |
| 1765 | except errors.HeaderParseError: |
| 1766 | raise errors.HeaderParseError( |
| 1767 | "expected addr-spec or obs-route but found '{}'".format(value)) |
| 1768 | angle_addr.append(token) |
| 1769 | token, value = get_addr_spec(value) |
| 1770 | angle_addr.append(token) |
| 1771 | if value and value[0] == '>': |
| 1772 | value = value[1:] |
| 1773 | else: |
| 1774 | angle_addr.defects.append(errors.InvalidHeaderDefect( |
| 1775 | "missing trailing '>' on angle-addr")) |
| 1776 | angle_addr.append(ValueTerminal('>', 'angle-addr-end')) |
| 1777 | if value and value[0] in CFWS_LEADER: |
| 1778 | token, value = get_cfws(value) |
| 1779 | angle_addr.append(token) |
| 1780 | return angle_addr, value |
| 1781 | |
| 1782 | def get_display_name(value): |
| 1783 | """ display-name = phrase |
no test coverage detected
searching dependent graphs…