/
VisualizerWebsite.py
87 lines (73 loc) · 2.31 KB
/
VisualizerWebsite.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
from django.core.exceptions import ObjectDoesNotExist
from ifttt.models import WebsiteUnavailableEvent
import requests
import time
from datetime import datetime
import pytz
import uuid
def __new_website_status(status, user_url):
try:
last_event = WebsiteUnavailableEvent.objects.filter(
web_url=user_url
).order_by('-meta_timestamp').first()
if last_event.status_code != str(status):
return True
except:
# assume list is empty
return True
return False
def get_iso_date():
return datetime.now(pytz.utc).replace(microsecond=0).isoformat('T')
def get_website(in_url):
status = 404
try:
r = requests.get(in_url, timeout=5)
status = r.status_code
except:
status = 404
return status
def get_website_event_records(limit=50, user_url=None):
recipe_list = []
object_list = WebsiteUnavailableEvent.objects.filter(
web_url=user_url
).order_by('-meta_timestamp')[:limit]
for version_event in object_list:
meta_list = {
'id': version_event.meta_id,
'timestamp': version_event.meta_timestamp,
}
returned_event = {
'occurred_at': str(version_event.occurred_at.isoformat('T')),
'status_code': version_event.status_code,
'meta': meta_list
}
recipe_list.append(returned_event)
return recipe_list
def __create_website_unavailable_record(value, user_url):
counter = str(uuid.uuid4())
meta_list = {
'id': counter,
'timestamp': int(time.time())
}
recipe_list = {
'occurred_at': get_iso_date(),
'status_code': value,
'web_url': user_url,
'meta': meta_list
}
new_event = WebsiteUnavailableEvent(
trigger_name="website_down",
meta_id=meta_list['id'],
meta_timestamp=meta_list['timestamp'],
occurred_at=recipe_list['occurred_at'],
status_code=recipe_list['status_code'],
web_url=recipe_list['web_url'],
)
new_event.save()
def update_website_status(status, user_url):
# get DB status, fixed
has_changed = __new_website_status(status, user_url)
# if status doesn't match
if has_changed:
# create new event -
__create_website_unavailable_record(status, user_url)