From fdc0f61c013cec1b66f9ecaacb131bbd869c7333 Mon Sep 17 00:00:00 2001 From: Chengwei Yang Date: Fri, 26 Feb 2016 10:10:07 +0800 Subject: [PATCH] Add multiple mattermost channel support This patch based on below PR https://github.com/NotSqrt/mattermost-integration-gitlab/pull/3 which add multiple mattermost channel support. To add a webhook to a project, add url like below http:///new_event?mattermost_webhook_url= Signed-off-by: Chengwei Yang --- mattermost_gitlab/server.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/mattermost_gitlab/server.py b/mattermost_gitlab/server.py index e3d9870..d18e298 100644 --- a/mattermost_gitlab/server.py +++ b/mattermost_gitlab/server.py @@ -37,13 +37,17 @@ def new_event(): 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 + elif 'mattermost_webhook_url' not in request.args: + print('Mattermost Webhook URL not set') + return 'Mattermost Webhook URL must be set' try: event = event_formatter.as_event(request.json) + mattermost_webhook_url = request.args['mattermost_webhook_url'] if event.should_report_event(app.config['REPORT_EVENTS']): text = event.format() - post_text(text) + post_text(text, mattermost_webhook_url) except Exception: import traceback traceback.print_exc() @@ -60,13 +64,17 @@ def new_ci_event(): 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 + elif 'mattermost_webhook_url' not in request.args: + print('Mattermost Webhook URL not set') + return 'Mattermost Webhook URL must be set' try: event = event_formatter.CIEvent(request.json) + mattermost_webhook_url = request.args['mattermost_webhook_url'] if event.should_report_event(app.config['REPORT_EVENTS']): text = event.format() - post_text(text) + post_text(text, mattermost_webhook_url) except Exception: import traceback traceback.print_exc() @@ -74,7 +82,7 @@ def new_ci_event(): return 'OK' -def post_text(text): +def post_text(text, mattermost_webhook_url): """ Mattermost POST method, posts text to the Mattermost incoming webhook URL """ @@ -89,7 +97,7 @@ def post_text(text): data['channel'] = app.config['CHANNEL'] headers = {'Content-Type': 'application/json'} - resp = requests.post(app.config['MATTERMOST_WEBHOOK_URL'], headers=headers, data=json.dumps(data)) + resp = requests.post(mattermost_webhook_url, headers=headers, data=json.dumps(data)) if resp.status_code is not requests.codes.ok: print('Encountered error posting to Mattermost URL %s, status=%d, response_body=%s' % (app.config['MATTERMOST_WEBHOOK_URL'], resp.status_code, resp.json())) @@ -97,7 +105,6 @@ def post_text(text): def parse_args(args=None): parser = argparse.ArgumentParser() - parser.add_argument('MATTERMOST_WEBHOOK_URL', help='The Mattermost webhook URL you created') server_options = parser.add_argument_group("Server") server_options.add_argument('-p', '--port', type=int, default=5000)