diff --git a/rhodecode/config/rcextensions/examples/http_call_on_push.py b/rhodecode/config/rcextensions/examples/http_call_on_push.py --- a/rhodecode/config/rcextensions/examples/http_call_on_push.py +++ b/rhodecode/config/rcextensions/examples/http_call_on_push.py @@ -25,12 +25,13 @@ def _push_hook(*args, **kwargs): repo_extra_fields = extra_fields.run(**kwargs) if repo_extra_fields.get('endpoint_url'): - endpoint = repo_extra_fields['endpoint_url'] + field_metadata = repo_extra_fields['endpoint_url'] + endpoint = field_metadata['field_value'] if endpoint: data = { - 'some_key': 'val' + 'project': kwargs['repository'], } - response = http_call.run(url=endpoint, json_data=data) - return HookResponse(0, 'Called endpoint {}, with response {}'.format(endpoint, response)) + response = http_call.run(url=endpoint, params=data) + return HookResponse(0, 'Called endpoint {}, with response {}\n'.format(endpoint, response)) return HookResponse(0, '') diff --git a/rhodecode/config/rcextensions/examples/trigger_ci_call.py b/rhodecode/config/rcextensions/examples/trigger_ci_call.py --- a/rhodecode/config/rcextensions/examples/trigger_ci_call.py +++ b/rhodecode/config/rcextensions/examples/trigger_ci_call.py @@ -25,7 +25,8 @@ def _push_hook(*args, **kwargs): repo_extra_fields = extra_fields.run(**kwargs) if repo_extra_fields.get('endpoint_url'): - endpoint = repo_extra_fields['endpoint_url'] + field_metadata = repo_extra_fields['endpoint_url'] + endpoint = field_metadata['field_value'] if endpoint: data = { 'some_key': 'val' diff --git a/rhodecode/config/rcextensions/examples/validate_commit_message_author.py b/rhodecode/config/rcextensions/examples/validate_commit_message_author.py --- a/rhodecode/config/rcextensions/examples/validate_commit_message_author.py +++ b/rhodecode/config/rcextensions/examples/validate_commit_message_author.py @@ -54,10 +54,11 @@ def _pre_push_hook(*args, **kwargs): repo_extra_fields = extra_fields.run(**kwargs) # optionally use 'extra fields' to control the logic per repo - should_validate = str2bool(repo_extra_fields.get('validate_author', True)) + validate_author = repo_extra_fields.get('validate_author', {}).get('field_value') + should_validate = str2bool(validate_author) # optionally store validation regex into extra fields - validation_regex = repo_extra_fields.get('validation_regex', '') + validation_regex = repo_extra_fields.get('validation_regex', {}).get('field_value') def validate_commit_message(commit_message, message_regex=None): """ diff --git a/rhodecode/config/rcextensions/helpers/extra_fields.py b/rhodecode/config/rcextensions/helpers/extra_fields.py --- a/rhodecode/config/rcextensions/helpers/extra_fields.py +++ b/rhodecode/config/rcextensions/helpers/extra_fields.py @@ -18,11 +18,26 @@ # and proprietary license terms, please see https://rhodecode.com/licenses/ """ -us in hooks:: +example usage in hooks:: from .helpers import extra_fields # returns list of dicts with key-val fetched from extra fields repo_extra_fields = extra_fields.run(**kwargs) + repo_extra_fields.get('endpoint_url') + + # the field stored the following example values + {u'created_on': datetime.datetime(), + u'field_key': u'endpoint_url', + u'field_label': u'Endpoint URL', + u'field_desc': u'Full HTTP endpoint to call if given', + u'field_type': u'str', + u'field_value': u'http://server.com/post', + u'repo_field_id': 1, + u'repository_id': 1} + # for example to obtain the value: + endpoint_field = repo_extra_fields.get('endpoint_url') + if endpoint_field: + url = endpoint_field['field_value'] """ diff --git a/rhodecode/config/rcextensions/helpers/http_call.py b/rhodecode/config/rcextensions/helpers/http_call.py --- a/rhodecode/config/rcextensions/helpers/http_call.py +++ b/rhodecode/config/rcextensions/helpers/http_call.py @@ -22,15 +22,28 @@ us in hooks:: from .helpers import http_call # returns response after making a POST call - response = http_call.run(url=url, json_data=data) + response = http_call.run(url=url, json_data={"key": "val"}) + + # returns response after making a GET call + response = http_call.run(url=url, params={"key": "val"}, method='get') """ from rhodecode.integrations.types.base import requests_retry_call -def run(url, json_data, method='post'): +def run(url, json_data=None, params=None, method='post'): requests_session = requests_retry_call() requests_session.verify = True # Verify SSL - resp = requests_session.post(url, json=json_data, timeout=60) - return resp.raise_for_status() # raise exception on a failed request + method_caller = getattr(requests_session, method, 'post') + + timeout = 60 + if json_data: + resp = method_caller(url, json=json_data, timeout=timeout) + elif params: + resp = method_caller(url, params=json_data, timeout=timeout) + else: + raise AttributeError('Provide json_data= or params= in function call') + resp.raise_for_status() # raise exception on a failed request + return resp +