##// END OF EJS Templates
webhook: add possibility to use POST or GET methods for calling webhooks.
marcink -
r1382:9900f5ed default
parent child Browse files
Show More
@@ -173,6 +173,18 b' class WebhookSettingsSchema(colander.Sch'
173 placeholder='secret_token'
173 placeholder='secret_token'
174 ),
174 ),
175 )
175 )
176 method_type = colander.SchemaNode(
177 colander.String(),
178 title=_('Call Method'),
179 description=_('Select if the webhook call should be made '
180 'with POST or GET.'),
181 default='post',
182 missing='',
183 widget=deform.widget.RadioChoiceWidget(
184 values=[('get', 'GET'), ('post', 'POST')],
185 inline=True
186 ),
187 )
176
188
177
189
178 class WebhookIntegrationType(IntegrationTypeBase):
190 class WebhookIntegrationType(IntegrationTypeBase):
@@ -225,11 +237,11 b' class WebhookIntegrationType(Integration'
225 url_calls = handler(event, data)
237 url_calls = handler(event, data)
226 log.debug('webhook: calling following urls: %s',
238 log.debug('webhook: calling following urls: %s',
227 [x[0] for x in url_calls])
239 [x[0] for x in url_calls])
228 post_to_webhook(url_calls)
240 post_to_webhook(url_calls, self.settings)
229
241
230
242
231 @task(ignore_result=True)
243 @task(ignore_result=True)
232 def post_to_webhook(url_calls):
244 def post_to_webhook(url_calls, settings):
233 max_retries = 3
245 max_retries = 3
234 for url, token, data in url_calls:
246 for url, token, data in url_calls:
235 # retry max N times
247 # retry max N times
@@ -241,8 +253,13 b' def post_to_webhook(url_calls):'
241 req_session.mount(
253 req_session.mount(
242 'http://', requests.adapters.HTTPAdapter(max_retries=retries))
254 'http://', requests.adapters.HTTPAdapter(max_retries=retries))
243
255
244 resp = req_session.post(url, json={
256 method = settings.get('method_type') or 'post'
257 call_method = getattr(req_session, method)
258
259 log.debug('calling WEBHOOK with method: %s', call_method)
260 resp = call_method(url, json={
245 'token': token,
261 'token': token,
246 'event': data
262 'event': data
247 })
263 })
264 log.debug('Got WEBHOOK response: %s', resp)
248 resp.raise_for_status() # raise exception on a failed request
265 resp.raise_for_status() # raise exception on a failed request
General Comments 0
You need to be logged in to leave comments. Login now