mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	This commit adds a generic function called check_send_webhook_message that does the following: * If a stream is specified in the webhook URL, it sends a stream message, otherwise sends a PM to the owner of the bot. * In the case of a stream message, if a custom topic is specified in the webhook URL, it uses that topic as the subject of the stream message. Also, note that we need not test this anywhere except for the helloworld webhook. Since helloworld is our default example for webhooks, it is here to stay and it made sense that tests for a generic function such as check_send_webhook_message be tested with an actual generic webhook! Fixes #8607.
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Webhooks for external integrations.
 | |
| from typing import Any, Dict, Iterable, Optional, Text
 | |
| 
 | |
| from django.http import HttpRequest, HttpResponse
 | |
| from django.utils.translation import ugettext as _
 | |
| 
 | |
| from zerver.decorator import api_key_only_webhook_view
 | |
| from zerver.lib.webhooks.common import check_send_webhook_message
 | |
| from zerver.lib.request import REQ, has_request_variables
 | |
| from zerver.lib.response import json_error, json_success
 | |
| from zerver.lib.validator import check_dict, check_string
 | |
| from zerver.models import UserProfile
 | |
| 
 | |
| @api_key_only_webhook_view('HelloWorld')
 | |
| @has_request_variables
 | |
| def api_helloworld_webhook(
 | |
|         request: HttpRequest, user_profile: UserProfile,
 | |
|         payload: Dict[str, Iterable[Dict[str, Any]]]=REQ(argument_type='body')
 | |
| ) -> HttpResponse:
 | |
| 
 | |
|     # construct the body of the message
 | |
|     body = 'Hello! I am happy to be here! :smile:'
 | |
| 
 | |
|     # try to add the Wikipedia article of the day
 | |
|     body_template = '\nThe Wikipedia featured article for today is **[{featured_title}]({featured_url})**'
 | |
|     body += body_template.format(**payload)
 | |
| 
 | |
|     topic = "Hello World"
 | |
| 
 | |
|     # send the message
 | |
|     check_send_webhook_message(request, user_profile, topic, body)
 | |
| 
 | |
|     return json_success()
 |