Coverage for amazonorders/entity/recipient.py: 96.77%
31 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-16 21:17 +0000
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-16 21:17 +0000
1import logging
2from amazonorders.entity.parsable import Parsable
4__author__ = "Alex Laird"
5__copyright__ = "Copyright 2024, Alex Laird"
6__version__ = "0.0.5"
8logger = logging.getLogger(__name__)
11class Recipient(Parsable):
12 def __init__(self,
13 parsed) -> None:
14 super().__init__(parsed)
16 self.name = self.safe_parse(self._parse_name)
17 self.address = self.safe_parse(self._parse_address)
19 def __repr__(self) -> str:
20 return "<Recipient: \"{}\">".format(self.name)
22 def __str__(self) -> str: # pragma: no cover
23 return "Recipient: \"{}\"".format(self.name)
25 def _parse_name(self):
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()
31 def _parse_address(self):
32 tag = self.parsed.find("li", {"class": "displayAddressAddressLine1"})
33 if tag:
34 value = tag.text.strip()
35 next_tag = self.parsed.find("li", {"class": "displayAddressAddressLine2"})
36 if next_tag:
37 value += "{}\n{}".format(tag.text.strip(), next_tag)
38 next_tag = self.parsed.find("li", {"class": "displayAddressCityStateOrRegionPostalCode"})
39 if next_tag:
40 value += "\n{}".format(next_tag.text.strip())
41 next_tag = self.parsed.find("li", {"class": "displayAddressCountryName"})
42 if next_tag:
43 value += "\n{}".format(next_tag.text.strip())
44 else:
45 value = self.parsed.find_all("div")[2].text
46 return value.strip()