Amazing-Python-Scripts
86 строк · 2.2 Кб
1import json
2
3
4class Response(object):
5"""
6Base Response Object
7
8Attributes:
9self.json (dict): JSON representation of response
10self._request (str): URL of
11self._response (`requests.models.Response` object): Response object from requests module
12"""
13
14def __init__(self, response):
15response.raise_for_status()
16
17self._response = response
18self._request = response.url
19self._json = json.loads(response.content)
20
21
22class PageSpeedResponse(Response):
23"""
24PageSpeed Response Object
25
26Attributes:
27self.url (str):
28self.speed (int):
29self.statistics (`Statistics` object):
30"""
31@property
32def url(self):
33return self._json['id']
34
35@property
36def loadingExperience(self):
37return self._json['loadingExperience']['overall_category']
38
39@property
40def originLoadingExperience(self):
41return self._json['originLoadingExperience']['overall_category']
42
43@property
44def originLoadingExperienceDetailed(self):
45metrics = self._json['originLoadingExperience']['metrics']
46keys_ = list(metrics.keys())
47
48originLoadingExperienceDetailed_ = {}
49
50for each in keys_:
51originLoadingExperienceDetailed_[each] = metrics[each]['category']
52
53return originLoadingExperienceDetailed_
54
55@property
56def loadingExperienceDetailed(self):
57metrics = self._json['loadingExperience']['metrics']
58keys_ = list(metrics.keys())
59
60loadingExperienceDetailed_ = {}
61
62for each in keys_:
63loadingExperienceDetailed_[each] = metrics[each]['category']
64
65return loadingExperienceDetailed_
66
67# In case of re-directs
68@property
69def requestedUrl(self):
70return self._json['lighthouseResult']['requestedUrl']
71
72@property
73def finalUrl(self):
74return self._json['lighthouseResult']['finalUrl']
75
76@property
77def version(self):
78return self._json['lighthouseResult']['lighthouseVersion']
79
80@property
81def userAgent(self):
82return self._json['lighthouseResult']['userAgent']
83
84@property
85def lighthouseResults(self):
86return self._json['lighthouseResult']
87