-
Notifications
You must be signed in to change notification settings - Fork 424
/
Copy pathdata_acceleration_report_item.py
97 lines (83 loc) · 3.32 KB
/
data_acceleration_report_item.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from defusedxml.ElementTree import fromstring
class DataAccelerationReportItem(object):
class ComparisonRecord(object):
def __init__(
self,
site,
sheet_uri,
unaccelerated_session_count,
avg_non_accelerated_plt,
accelerated_session_count,
avg_accelerated_plt,
):
self._site = site
self._sheet_uri = sheet_uri
self._unaccelerated_session_count = unaccelerated_session_count
self._avg_non_accelerated_plt = avg_non_accelerated_plt
self._accelerated_session_count = accelerated_session_count
self._avg_accelerated_plt = avg_accelerated_plt
@property
def site(self):
return self._site
@property
def sheet_uri(self):
return self._sheet_uri
@property
def unaccelerated_session_count(self):
return self._unaccelerated_session_count
@property
def accelerated_session_count(self):
return self._accelerated_session_count
@property
def avg_accelerated_plt(self):
return self._avg_accelerated_plt
@property
def avg_non_accelerated_plt(self):
return self._avg_non_accelerated_plt
def __init__(self, comparison_records):
self._comparison_records = comparison_records
def __repr__(self):
return f"<(deprecated)DataAccelerationReportItem site={self.site} sheet={sheet_uri}>"
@property
def comparison_records(self):
return self._comparison_records
@staticmethod
def _parse_element(comparison_record_xml, ns):
site = comparison_record_xml.get("site", None)
sheet_uri = comparison_record_xml.get("sheetURI", None)
unaccelerated_session_count = comparison_record_xml.get("unacceleratedSessionCount", None)
avg_non_accelerated_plt = comparison_record_xml.get("averageNonAcceleratedPLT", None)
accelerated_session_count = comparison_record_xml.get("acceleratedSessionCount", None)
avg_accelerated_plt = comparison_record_xml.get("averageAcceleratedPLT", None)
return (
site,
sheet_uri,
unaccelerated_session_count,
avg_non_accelerated_plt,
accelerated_session_count,
avg_accelerated_plt,
)
@classmethod
def from_response(cls, resp, ns):
comparison_records = list()
parsed_response = fromstring(resp)
all_comparison_records_xml = parsed_response.findall(".//t:comparisonRecord", namespaces=ns)
for comparison_record_xml in all_comparison_records_xml:
(
site,
sheet_uri,
unaccelerated_session_count,
avg_non_accelerated_plt,
accelerated_session_count,
avg_accelerated_plt,
) = cls._parse_element(comparison_record_xml, ns)
comparison_record = DataAccelerationReportItem.ComparisonRecord(
site,
sheet_uri,
unaccelerated_session_count,
avg_non_accelerated_plt,
accelerated_session_count,
avg_accelerated_plt,
)
comparison_records.append(comparison_record)
return cls(comparison_records)