##// END OF EJS Templates
rcextensions: updated examples, and made http_call util use the method parameter.
marcink -
r3365:dcae2268 default
parent child Browse files
Show More
@@ -25,12 +25,13 b' def _push_hook(*args, **kwargs):'
25 repo_extra_fields = extra_fields.run(**kwargs)
25 repo_extra_fields = extra_fields.run(**kwargs)
26
26
27 if repo_extra_fields.get('endpoint_url'):
27 if repo_extra_fields.get('endpoint_url'):
28 endpoint = repo_extra_fields['endpoint_url']
28 field_metadata = repo_extra_fields['endpoint_url']
29 endpoint = field_metadata['field_value']
29 if endpoint:
30 if endpoint:
30 data = {
31 data = {
31 'some_key': 'val'
32 'project': kwargs['repository'],
32 }
33 }
33 response = http_call.run(url=endpoint, json_data=data)
34 response = http_call.run(url=endpoint, params=data)
34 return HookResponse(0, 'Called endpoint {}, with response {}'.format(endpoint, response))
35 return HookResponse(0, 'Called endpoint {}, with response {}\n'.format(endpoint, response))
35
36
36 return HookResponse(0, '')
37 return HookResponse(0, '')
@@ -25,7 +25,8 b' def _push_hook(*args, **kwargs):'
25 repo_extra_fields = extra_fields.run(**kwargs)
25 repo_extra_fields = extra_fields.run(**kwargs)
26
26
27 if repo_extra_fields.get('endpoint_url'):
27 if repo_extra_fields.get('endpoint_url'):
28 endpoint = repo_extra_fields['endpoint_url']
28 field_metadata = repo_extra_fields['endpoint_url']
29 endpoint = field_metadata['field_value']
29 if endpoint:
30 if endpoint:
30 data = {
31 data = {
31 'some_key': 'val'
32 'some_key': 'val'
@@ -54,10 +54,11 b' def _pre_push_hook(*args, **kwargs):'
54 repo_extra_fields = extra_fields.run(**kwargs)
54 repo_extra_fields = extra_fields.run(**kwargs)
55
55
56 # optionally use 'extra fields' to control the logic per repo
56 # optionally use 'extra fields' to control the logic per repo
57 should_validate = str2bool(repo_extra_fields.get('validate_author', True))
57 validate_author = repo_extra_fields.get('validate_author', {}).get('field_value')
58 should_validate = str2bool(validate_author)
58
59
59 # optionally store validation regex into extra fields
60 # optionally store validation regex into extra fields
60 validation_regex = repo_extra_fields.get('validation_regex', '')
61 validation_regex = repo_extra_fields.get('validation_regex', {}).get('field_value')
61
62
62 def validate_commit_message(commit_message, message_regex=None):
63 def validate_commit_message(commit_message, message_regex=None):
63 """
64 """
@@ -18,11 +18,26 b''
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
19
19
20 """
20 """
21 us in hooks::
21 example usage in hooks::
22
22
23 from .helpers import extra_fields
23 from .helpers import extra_fields
24 # returns list of dicts with key-val fetched from extra fields
24 # returns list of dicts with key-val fetched from extra fields
25 repo_extra_fields = extra_fields.run(**kwargs)
25 repo_extra_fields = extra_fields.run(**kwargs)
26 repo_extra_fields.get('endpoint_url')
27
28 # the field stored the following example values
29 {u'created_on': datetime.datetime(),
30 u'field_key': u'endpoint_url',
31 u'field_label': u'Endpoint URL',
32 u'field_desc': u'Full HTTP endpoint to call if given',
33 u'field_type': u'str',
34 u'field_value': u'http://server.com/post',
35 u'repo_field_id': 1,
36 u'repository_id': 1}
37 # for example to obtain the value:
38 endpoint_field = repo_extra_fields.get('endpoint_url')
39 if endpoint_field:
40 url = endpoint_field['field_value']
26
41
27 """
42 """
28
43
@@ -22,15 +22,28 b' us in hooks::'
22
22
23 from .helpers import http_call
23 from .helpers import http_call
24 # returns response after making a POST call
24 # returns response after making a POST call
25 response = http_call.run(url=url, json_data=data)
25 response = http_call.run(url=url, json_data={"key": "val"})
26
27 # returns response after making a GET call
28 response = http_call.run(url=url, params={"key": "val"}, method='get')
26
29
27 """
30 """
28
31
29 from rhodecode.integrations.types.base import requests_retry_call
32 from rhodecode.integrations.types.base import requests_retry_call
30
33
31
34
32 def run(url, json_data, method='post'):
35 def run(url, json_data=None, params=None, method='post'):
33 requests_session = requests_retry_call()
36 requests_session = requests_retry_call()
34 requests_session.verify = True # Verify SSL
37 requests_session.verify = True # Verify SSL
35 resp = requests_session.post(url, json=json_data, timeout=60)
38 method_caller = getattr(requests_session, method, 'post')
36 return resp.raise_for_status() # raise exception on a failed request
39
40 timeout = 60
41 if json_data:
42 resp = method_caller(url, json=json_data, timeout=timeout)
43 elif params:
44 resp = method_caller(url, params=json_data, timeout=timeout)
45 else:
46 raise AttributeError('Provide json_data= or params= in function call')
47 resp.raise_for_status() # raise exception on a failed request
48 return resp
49
General Comments 0
You need to be logged in to leave comments. Login now