Support for custom headers per watch

pull/1/head
Leigh Morresi 4 years ago
parent 3f60ab4167
commit fbe20d45cc

@ -107,7 +107,6 @@ def edit_page():
global messages
uuid = request.args.get('uuid')
output = render_template("edit.html", uuid=uuid, watch=datastore.data['watching'][uuid], messages=messages)
return output
@ -186,9 +185,20 @@ def api_update():
url = request.form.get('url').strip()
tag = request.form.get('tag').strip()
form_headers = request.form.get('headers').strip().split("\n")
extra_headers = {}
if form_headers:
for header in form_headers:
if len(header):
parts = header.split(':', 1)
extra_headers.update({parts[0].strip(): parts[1].strip()})
validators.url(url) #@todo switch to prop/attr/observer
datastore.data['watching'][uuid].update({'url': url,
'tag': tag})
'tag': tag,
'headers':extra_headers})
#@todo switch to prop/attr/observer
datastore.sync_to_json()

@ -47,6 +47,7 @@ class perform_site_check(Thread):
def run(self):
# Default headers
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',

@ -172,4 +172,8 @@ color: #fff;
border-radius: 10px;
color: #fff;
font-weight: bold;
}
}
.pure-form label {
font-weight: bold;
}

@ -4,7 +4,7 @@
<div class="edit-form">
<form class="pure-form pure-form-aligned" action="/api/update?uuid={{uuid}}" method="POST">
<form class="pure-form pure-form-stacked" action="/api/update?uuid={{uuid}}" method="POST">
<fieldset>
<div class="pure-control-group">
<label for="url">URL</label>
@ -17,13 +17,27 @@
<input type="text" placeholder="tag" size="10" id="tag" name="tag" value="{{ watch.tag}}"/>
</div>
<div class="pure-controls">
<fieldset class="pure-group">
<label for="headers">Extra request headers</label>
<textarea id=headers name="headers" class="pure-input-1-2" placeholder="Example
Cookie: foobar
User-Agent: wonderbra 1.0"
style="width: 100%;
font-family:monospace;
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;" rows="5">{% for key, value in watch.headers.items() %}{{ key }}: {{ value }}
{% endfor %}</textarea>
<br/>
</fieldset>
<div class="pure-control-group">
<button type="submit" class="pure-button pure-button-primary">Save</button>
</div>
<br/>
<div class="pure-controls">
<div class="pure-control-group">
<a href="/" class="pure-button button-small button-cancel">Cancel</a>
<a href="/api/delete?uuid={{uuid}}"
class="pure-button button-small button-error ">Delete</a>

Loading…
Cancel
Save