Files
zulip/zerver/webhooks/yo/view.py
PIG208 c03b9c95ad request: Store client information using ZulipRequestNotes.
This concludes the HttpRequest migration to eliminate arbitrary
attributes (except private ones that are belong to django) attached
to the request object during runtime and migrated them to a
separate data structure dedicated for the purpose of adding
information (so called notes) to a HttpRequest.
2021-07-14 12:01:07 -07:00

29 lines
1012 B
Python

# Webhooks for external integrations.
from typing import Optional
from django.http import HttpRequest, HttpResponse
from zerver.decorator import webhook_view
from zerver.lib.actions import check_send_private_message
from zerver.lib.request import REQ, get_request_notes, has_request_variables
from zerver.lib.response import json_success
from zerver.models import UserProfile, get_user
@webhook_view("Yo", notify_bot_owner_on_invalid_json=False)
@has_request_variables
def api_yo_app_webhook(
request: HttpRequest,
user_profile: UserProfile,
email: str = REQ(default=""),
username: str = REQ(default="Yo Bot"),
topic: Optional[str] = REQ(default=None),
user_ip: Optional[str] = REQ(default=None),
) -> HttpResponse:
body = f"Yo from {username}"
receiving_user = get_user(email, user_profile.realm)
client = get_request_notes(request).client
assert client is not None
check_send_private_message(user_profile, client, receiving_user, body)
return json_success()