make webhook work better

pull/244/head
Jeff Becker 5 years ago
parent 74710d6c77
commit 6ea28fa781
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -20,7 +20,7 @@ from email.utils import parsedate, format_datetime
import requests
root = '/srv/lokinet'
root = './lokinet'
def _compare_dates(left, right):
"""
@ -35,11 +35,11 @@ class TokenHolder:
def __init__(self, f="token"):
if not os.path.exists(self._dir):
os.mkdir(self._dir, 0700)
os.mkdir(self._dir, 0o700)
f = os.path.join(self._dir, f)
if os.path.exists(f):
with open(f) as fd:
self._token = fd.read()
self._token = fd.read().replace("\n", "")
def verify(self, token):
"""
@ -57,7 +57,7 @@ class BinHolder:
def __init__(self, f):
if not os.path.exists(self._dir):
os.mkdir(self._dir, 0700)
os.mkdir(self._dir, 0o700)
self._fpath = os.path.join(self._dir, f)
def put(self, fd):
@ -76,9 +76,10 @@ class BinHolder:
if not t:
return False
t = time.mktime(t)
st = os.stat(self._fpath)
return st.st_mtime >= t
if os.path.exists(self._fpath):
st = os.stat(self._fpath)
return st.st_mtime >= t
return False
def serve(self, last_modified, respond):
@ -90,7 +91,9 @@ class BinHolder:
t = time.mktime(t)
if t is None:
t = 0
if not os.path.exists(self._fpath):
respond("404 Not Found", [])
return []
st = os.stat(self._fpath)
if st.st_mtime < t:
respond("304 Not Modified", [("Last-Modified", format_datetime(st.st_mtime)) ])
@ -114,7 +117,7 @@ class RCHolder:
for f in files:
self._add_rc(os.path.join(root, f))
else:
os.mkdir(self._dir, 0700)
os.mkdir(self._dir, 0o700)
def prune(self):
"""
@ -226,8 +229,10 @@ def app(environ, start_response):
if environ.get("PATH_INFO") == "/":
j = json.loads(environ.get("wsgi.input").read(request_body_size))
environ.get("wsgi.errors").write("webhook json: {}".format(json.dumps(j, sort_keys=True, indent=2)))
token = environ.get("HTTP_X_GITLAB_TOKEN")
environ.get("wsgi.errors").write("\ntoken={}\n".format(token))
environ.get("wsgi.errors").flush()
return handle_webhook(j, environ.get("HTTP_X_GITLAB_TOKEN"), environ.get("HTTP_X_GITLAB_EVENT"), start_response)
return handle_webhook(j, token, environ.get("HTTP_X_GITLAB_EVENT"), start_response)
else:
return response("404 Not Found", 'bad url', start_response)
elif method.upper() == "GET":

Loading…
Cancel
Save