Coverage for amazonorders/entity/recipient.py: 25.00%
36 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-12 15:20 +0000
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-12 15:20 +0000
1import logging
3__author__ = "Alex Laird"
4__copyright__ = "Copyright 2024, Alex Laird"
5__version__ = "0.0.3"
7logger = logging.getLogger(__name__)
10class Recipient:
11 def __init__(self,
12 parsed) -> None:
13 self.parsed = parsed
15 self.name = self._parse_name()
16 self.address = self._parse_address()
18 def __repr__(self) -> str:
19 return "<Recipient: \"{}\">".format(self.name)
21 def __str__(self) -> str: # pragma: no cover
22 return "Recipient: \"{}\"".format(self.name)
24 def _parse_name(self):
25 try:
26 tag = self.parsed.find("li", {"class": "displayAddressFullName"})
27 if not tag:
28 tag = self.parsed.find_all("div")[1]
29 return tag.text.strip()
30 except (AttributeError, IndexError):
31 logger.warning("When building Recipient, `name` could not be parsed.", exc_info=True)
33 def _parse_address(self):
34 try:
35 tag = self.parsed.find("li", {"class": "displayAddressAddressLine1"})
36 if tag:
37 value = tag.text.strip()
38 next_tag = self.parsed.find("li", {"class": "displayAddressAddressLine2"})
39 if next_tag:
40 value += "{}\n{}".format(tag.text.strip(), next_tag)
41 next_tag = self.parsed.find("li", {"class": "displayAddressCityStateOrRegionPostalCode"})
42 if next_tag:
43 value += "\n{}".format(next_tag.text.strip())
44 next_tag = self.parsed.find("li", {"class": "displayAddressCountryName"})
45 if next_tag:
46 value += "\n{}".format(next_tag.text.strip())
47 else:
48 value = self.parsed.find_all("div")[2].text
49 return value.strip()
50 except (AttributeError, IndexError):
51 logger.warning("When building Recipient, `address` could not be parsed.", exc_info=True)