def root(): if request.json is None: print 'Invalid Content-Type' return 'Content-Type must be application/json and the request body must contain valid JSON', 400 if SECRET: signature = request.headers.get('X-Gitlab-Token', None) sig2 = SECRET.copy() sig2.update(request.data) if signature is None or sig2.hexdigest() != signature.split('=')[1]: return 'Invalid or missing X-Hub-Signature', 400 data = request.json event = request.headers['X-Gitlab-Event'] print event #print data msg = "" if event == "Issue Hook": if data['object_attributes']['action'] == "open": msg = Issue(data).opened() elif data['object_attributes']['action'] == "close": msg = Issue(data).closed() elif event == "Push Hook": msg = Push(data).default() elif event == "Note Hook": msg = Comment(data).default() elif event == "Pipeline Hook": if self.data['object_attributes']['status'] != 'pending' and self.data[ 'object_attributes']['status'] != 'running': msg = Pipeline(data).default() print msg if msg: hook_info = get_hook_info(data) if hook_info: url, channel = get_hook_info(data) post(msg, url, channel) print "Notification successfully posted to Mattermost" return "Notification successfully posted to Mattermost" else: print "Notification ignored (repository is blacklisted)." return "Notification ignored (repository is blacklisted)." else: print "Not implemented" return "Not implemented", 400
def root(): if request.json is None: print 'Invalid Content-Type' return 'Content-Type must be application/json and the request body must contain valid JSON', 400 if SECRET: signature = request.headers.get('X-Hub-Signature', None) sig2 = SECRET.copy() sig2.update(request.data) if signature is None or sig2.hexdigest() != signature.split('=')[1]: return 'Invalid or missing X-Hub-Signature', 400 data = request.json event = request.headers['X-Github-Event'] msg = "" if event == "pull_request": if data['action'] == "opened": msg = PullRequest(data).opened() elif data['action'] == "closed": msg = PullRequest(data).closed() elif data['action'] == "assigned": msg = PullRequest(data).assigned() elif event == "issues": if data['action'] == "opened": msg = Issue(data).opened() elif data['action'] == "closed": msg = Issue(data).closed() elif data['action'] == "labeled": msg = Issue(data).labeled() elif data['action'] == "assigned": msg = Issue(data).assigned() elif event == "issue_comment": if data['action'] == "created": msg = IssueComment(data).created() elif event == "repository": if data['action'] == "created": msg = Repository(data).created() elif event == "create": if data['ref_type'] == "branch": msg = Branch(data).created() elif data['ref_type'] == "tag": msg = Tag(data).created() elif event == "delete": if data['ref_type'] == "branch": msg = Branch(data).deleted() elif event == "pull_request_review_comment": if data['action'] == "created": msg = PullRequestComment(data).created() elif event == "push": if not (data['deleted'] and data['forced']): if not data['ref'].startswith("refs/tags/"): msg = Push(data).commits() elif event == "commit_comment": if data['action'] == "created": msg = CommitComment(data).created() if msg: hook_info = get_hook_info(data) if hook_info: url, channel = get_hook_info(data) post(msg, url, channel) return "Notification successfully posted to Mattermost" else: return "Notification ignored (repository is blacklisted)." else: return "Not implemented", 400