angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr obs-angle-addr = [CFWS] "<" obs-route addr-spec ">" [CFWS]
(value)
| 1717 | return obs_route, value[1:] |
| 1718 | |
| 1719 | def get_angle_addr(value): |
| 1720 | """ angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr |
| 1721 | obs-angle-addr = [CFWS] "<" obs-route addr-spec ">" [CFWS] |
| 1722 | |
| 1723 | """ |
| 1724 | angle_addr = AngleAddr() |
| 1725 | if value and value[0] in CFWS_LEADER: |
| 1726 | token, value = get_cfws(value) |
| 1727 | angle_addr.append(token) |
| 1728 | if not value or value[0] != '<': |
| 1729 | raise errors.HeaderParseError( |
| 1730 | "expected angle-addr but found '{}'".format(value)) |
| 1731 | angle_addr.append(ValueTerminal('<', 'angle-addr-start')) |
| 1732 | value = value[1:] |
| 1733 | # Although it is not legal per RFC5322, SMTP uses '<>' in certain |
| 1734 | # circumstances. |
| 1735 | if value and value[0] == '>': |
| 1736 | angle_addr.append(ValueTerminal('>', 'angle-addr-end')) |
| 1737 | angle_addr.defects.append(errors.InvalidHeaderDefect( |
| 1738 | "null addr-spec in angle-addr")) |
| 1739 | value = value[1:] |
| 1740 | return angle_addr, value |
| 1741 | try: |
| 1742 | token, value = get_addr_spec(value) |
| 1743 | except errors.HeaderParseError: |
| 1744 | try: |
| 1745 | token, value = get_obs_route(value) |
| 1746 | angle_addr.defects.append(errors.ObsoleteHeaderDefect( |
| 1747 | "obsolete route specification in angle-addr")) |
| 1748 | except errors.HeaderParseError: |
| 1749 | raise errors.HeaderParseError( |
| 1750 | "expected addr-spec or obs-route but found '{}'".format(value)) |
| 1751 | angle_addr.append(token) |
| 1752 | token, value = get_addr_spec(value) |
| 1753 | angle_addr.append(token) |
| 1754 | if value and value[0] == '>': |
| 1755 | value = value[1:] |
| 1756 | else: |
| 1757 | angle_addr.defects.append(errors.InvalidHeaderDefect( |
| 1758 | "missing trailing '>' on angle-addr")) |
| 1759 | angle_addr.append(ValueTerminal('>', 'angle-addr-end')) |
| 1760 | if value and value[0] in CFWS_LEADER: |
| 1761 | token, value = get_cfws(value) |
| 1762 | angle_addr.append(token) |
| 1763 | return angle_addr, value |
| 1764 | |
| 1765 | def get_display_name(value): |
| 1766 | """ display-name = phrase |
no test coverage detected