mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-02 04:53:36 +00:00 
			
		
		
		
	webhooks: Migrate helloworld to use WildValue to use @typed_endpoint.
We owe more documentation on the use of WildValue. A follow-up on updating it with examples of WildValue and endpoint will be desirable.
This commit is contained in:
		
				
					committed by
					
						 Tim Abbott
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							9fef12950a
						
					
				
				
					commit
					ece6b98699
				
			| @@ -1,21 +1,22 @@ | ||||
| # Webhooks for external integrations. | ||||
| from typing import Any, Dict, Sequence | ||||
|  | ||||
| from django.http import HttpRequest, HttpResponse | ||||
|  | ||||
| from zerver.decorator import webhook_view | ||||
| from zerver.lib.request import REQ, has_request_variables | ||||
| from zerver.lib.response import json_success | ||||
| from zerver.lib.typed_endpoint import WebhookPayload, typed_endpoint | ||||
| from zerver.lib.validator import WildValue, check_string | ||||
| from zerver.lib.webhooks.common import check_send_webhook_message | ||||
| from zerver.models import UserProfile | ||||
|  | ||||
|  | ||||
| @webhook_view("HelloWorld") | ||||
| @has_request_variables | ||||
| @typed_endpoint | ||||
| def api_helloworld_webhook( | ||||
|     request: HttpRequest, | ||||
|     user_profile: UserProfile, | ||||
|     payload: Dict[str, Sequence[Dict[str, Any]]] = REQ(argument_type="body"), | ||||
|     *, | ||||
|     payload: WebhookPayload[WildValue], | ||||
| ) -> HttpResponse: | ||||
|     # construct the body of the message | ||||
|     body = "Hello! I am happy to be here! :smile:" | ||||
| @@ -24,7 +25,10 @@ def api_helloworld_webhook( | ||||
|     body_template = ( | ||||
|         "\nThe Wikipedia featured article for today is **[{featured_title}]({featured_url})**" | ||||
|     ) | ||||
|     body += body_template.format(**payload) | ||||
|     body += body_template.format( | ||||
|         featured_title=payload["featured_title"].tame(check_string), | ||||
|         featured_url=payload["featured_url"].tame(check_string), | ||||
|     ) | ||||
|  | ||||
|     topic = "Hello World" | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user