def authorize_travis(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
if 'payload' not in request.form:
abort(requests.codes.bad, 'Expected a payload field with the json payload')
payload = json.loads(request.form.get('payload'))
token = request.headers.get('Authorization', None)
repository = payload['repository']
logging.info('Handling notification for repo: {0}/{1} commit {2}'.format(
repository['owner_name'], repository['name'], payload['commit']))
if not token:
abort(requests.codes.forbidden, 'A token is required')
repository = '{0}/{1}'.format(payload['repository']['owner_name'], payload['repository']['name'])
expected_token = sha256((repository + TRAVIS_TOKEN).encode('utf-8')).hexdigest()
if token != expected_token:
abort(requests.codes.unauthorized, 'Invalid token')
return f(payload, *args, **kwargs)
return wrapper
评论列表
文章目录