Amazing-Python-Scripts

Форк
0
86 строк · 2.2 Кб
1
import json
2

3

4
class Response(object):
5
    """ 
6
    Base Response Object
7

8
    Attributes:
9
        self.json (dict): JSON representation of response
10
        self._request (str): URL of
11
        self._response (`requests.models.Response` object): Response object from requests module
12
    """
13

14
    def __init__(self, response):
15
        response.raise_for_status()
16

17
        self._response = response
18
        self._request = response.url
19
        self._json = json.loads(response.content)
20

21

22
class PageSpeedResponse(Response):
23
    """ 
24
    PageSpeed Response Object
25

26
    Attributes:
27
        self.url (str):
28
        self.speed (int):
29
        self.statistics (`Statistics` object):
30
    """
31
    @property
32
    def url(self):
33
        return self._json['id']
34

35
    @property
36
    def loadingExperience(self):
37
        return self._json['loadingExperience']['overall_category']
38

39
    @property
40
    def originLoadingExperience(self):
41
        return self._json['originLoadingExperience']['overall_category']
42

43
    @property
44
    def originLoadingExperienceDetailed(self):
45
        metrics = self._json['originLoadingExperience']['metrics']
46
        keys_ = list(metrics.keys())
47

48
        originLoadingExperienceDetailed_ = {}
49

50
        for each in keys_:
51
            originLoadingExperienceDetailed_[each] = metrics[each]['category']
52

53
        return originLoadingExperienceDetailed_
54

55
    @property
56
    def loadingExperienceDetailed(self):
57
        metrics = self._json['loadingExperience']['metrics']
58
        keys_ = list(metrics.keys())
59

60
        loadingExperienceDetailed_ = {}
61

62
        for each in keys_:
63
            loadingExperienceDetailed_[each] = metrics[each]['category']
64

65
        return loadingExperienceDetailed_
66

67
    # In case of re-directs
68
    @property
69
    def requestedUrl(self):
70
        return self._json['lighthouseResult']['requestedUrl']
71

72
    @property
73
    def finalUrl(self):
74
        return self._json['lighthouseResult']['finalUrl']
75

76
    @property
77
    def version(self):
78
        return self._json['lighthouseResult']['lighthouseVersion']
79

80
    @property
81
    def userAgent(self):
82
        return self._json['lighthouseResult']['userAgent']
83

84
    @property
85
    def lighthouseResults(self):
86
        return self._json['lighthouseResult']
87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.