rcextensions: updated examples, and made http_call util use the method parameter.

- before it was ununsed by mistake.
This commit is contained in:
Marcin Kuzminski 2019-01-02 19:26:02 +01:00
parent 9dd589e264
commit a631443803
5 changed files with 43 additions and 12 deletions

View file

@ -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, '')

View file

@ -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'

View file

@ -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):
"""

View file

@ -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']
"""

View file

@ -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