parent
44f0639dfe
commit
2f018ac04c
@ -0,0 +1,54 @@
|
|||||||
|
from threading import Thread
|
||||||
|
import time
|
||||||
|
import requests
|
||||||
|
|
||||||
|
import hashlib
|
||||||
|
|
||||||
|
# Hmm Polymorphism datastore, thread, etc
|
||||||
|
class perform_site_check(Thread):
|
||||||
|
def __init__(self, *args, uuid=False, datastore, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.timestamp = int(time.time()) # used for storage etc too
|
||||||
|
self.uuid = uuid
|
||||||
|
self.datastore = datastore
|
||||||
|
self.url = datastore.get_val(uuid, 'url')
|
||||||
|
self.current_md5 = datastore.get_val(uuid, 'previous_md5')
|
||||||
|
|
||||||
|
def save_firefox_screenshot(self, uuid, output):
|
||||||
|
#@todo call selenium or whatever
|
||||||
|
return
|
||||||
|
|
||||||
|
def save_response_output(self, output):
|
||||||
|
# @todo maybe record a history.json, [timestamp, md5, filename]
|
||||||
|
import os
|
||||||
|
path = "/datastore/{}".format(self.uuid)
|
||||||
|
try:
|
||||||
|
os.stat(path)
|
||||||
|
except:
|
||||||
|
os.mkdir(path)
|
||||||
|
|
||||||
|
with open("{}/{}.txt".format(path, self.timestamp), 'w') as f:
|
||||||
|
f.write(output)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
try:
|
||||||
|
r = requests.get(self.url)
|
||||||
|
except requests.exceptions.ConnectionError as e:
|
||||||
|
self.datastore.update_watch(self.uuid, 'last_error', str(e))
|
||||||
|
|
||||||
|
print (str(e))
|
||||||
|
else:
|
||||||
|
self.datastore.update_watch(self.uuid, 'last_error', False)
|
||||||
|
self.datastore.update_watch(self.uuid, 'last_check_status', r.status_code)
|
||||||
|
|
||||||
|
fetched_md5=hashlib.md5(r.text.encode('utf-8')).hexdigest()
|
||||||
|
|
||||||
|
if self.current_md5 != fetched_md5:
|
||||||
|
self.datastore.update_watch(self.uuid, 'previous_md5', fetched_md5)
|
||||||
|
self.save_response_output(r.text)
|
||||||
|
self.datastore.update_watch(self.uuid, 'last_changed', self.timestamp)
|
||||||
|
|
||||||
|
self.datastore.update_watch(self.uuid, 'last_checked', int(time.time()))
|
||||||
|
pass
|
Loading…
Reference in new issue