def request_event_queue(user_profile: UserProfile, user_client: Client, apply_markdown: bool, client_gravatar: bool, slim_presence: bool, queue_lifespan_secs: int, event_types: Optional[Iterable[str]]=None, all_public_streams: bool=False, narrow: Iterable[Sequence[str]]=[], bulk_message_deletion: bool=False) -> Optional[str]: if not settings.USING_TORNADO: return None tornado_uri = get_tornado_uri(user_profile.realm) req = {'dont_block': 'true', 'apply_markdown': orjson.dumps(apply_markdown), 'client_gravatar': orjson.dumps(client_gravatar), 'slim_presence': orjson.dumps(slim_presence), 'all_public_streams': orjson.dumps(all_public_streams), 'client': 'internal', 'user_profile_id': user_profile.id, 'user_client': user_client.name, 'narrow': orjson.dumps(narrow), 'secret': settings.SHARED_SECRET, 'lifespan_secs': queue_lifespan_secs, 'bulk_message_deletion': orjson.dumps(bulk_message_deletion)} if event_types is not None: req['event_types'] = orjson.dumps(event_types) resp = requests_client().post( tornado_uri + '/api/v1/events/internal', data=req ) return resp.json()['queue_id']
def send_notification_http(realm: Realm, data: Mapping[str, Any]) -> None: if settings.TORNADO_SERVER and not settings.RUNNING_INSIDE_TORNADO: tornado_uri = get_tornado_uri(realm) requests_client.post(tornado_uri + '/notify_tornado', data=dict( data = ujson.dumps(data), secret = settings.SHARED_SECRET)) else: process_notification(data)
def send_notification_http(realm: Realm, data: Mapping[str, Any]) -> None: if not settings.USING_TORNADO or settings.RUNNING_INSIDE_TORNADO: process_notification(data) else: tornado_uri = get_tornado_uri(realm) requests_client().post( tornado_uri + "/notify_tornado", data=dict(data=orjson.dumps(data), secret=settings.SHARED_SECRET), )
def get_user_events(user_profile: UserProfile, queue_id: str, last_event_id: int) -> List[Dict[Any, Any]]: if settings.TORNADO_SERVER: tornado_uri = get_tornado_uri(user_profile.realm) post_data = { 'queue_id': queue_id, 'last_event_id': last_event_id, 'dont_block': 'true', 'user_profile_id': user_profile.id, 'secret': settings.SHARED_SECRET, 'client': 'internal' } # type: Dict[str, Any] resp = requests_client.post(tornado_uri + '/api/v1/events/internal', data=post_data) resp.raise_for_status() return extract_json_response(resp)['events'] return []
def get_user_events(user_profile: UserProfile, queue_id: str, last_event_id: int) -> List[Dict[str, Any]]: if not settings.USING_TORNADO: return [] tornado_uri = get_tornado_uri(user_profile.realm) post_data: Dict[str, Any] = { "queue_id": queue_id, "last_event_id": last_event_id, "dont_block": "true", "user_profile_id": user_profile.id, "secret": settings.SHARED_SECRET, "client": "internal", } resp = requests_client().post(tornado_uri + "/api/v1/events/internal", data=post_data) return resp.json()["events"]
def get_user_events(user_profile: UserProfile, queue_id: str, last_event_id: int) -> List[Dict[str, Any]]: if not settings.TORNADO_SERVER: return [] tornado_uri = get_tornado_uri(user_profile.realm) post_data: Dict[str, Any] = { 'queue_id': queue_id, 'last_event_id': last_event_id, 'dont_block': 'true', 'user_profile_id': user_profile.id, 'secret': settings.SHARED_SECRET, 'client': 'internal', } resp = requests_client().post(tornado_uri + '/api/v1/events/internal', data=post_data) return resp.json()['events']
def request_event_queue(user_profile: UserProfile, user_client: Client, apply_markdown: bool, client_gravatar: bool, slim_presence: bool, queue_lifespan_secs: int, event_types: Optional[Iterable[str]] = None, all_public_streams: bool = False, narrow: Iterable[Sequence[str]] = []) -> Optional[str]: if settings.TORNADO_SERVER: tornado_uri = get_tornado_uri(user_profile.realm) req = { 'dont_block': 'true', 'apply_markdown': ujson.dumps(apply_markdown), 'client_gravatar': ujson.dumps(client_gravatar), 'slim_presence': ujson.dumps(slim_presence), 'all_public_streams': ujson.dumps(all_public_streams), 'client': 'internal', 'user_profile_id': user_profile.id, 'user_client': user_client.name, 'narrow': ujson.dumps(narrow), 'secret': settings.SHARED_SECRET, 'lifespan_secs': queue_lifespan_secs } if event_types is not None: req['event_types'] = ujson.dumps(event_types) try: resp = requests_client.post(tornado_uri + '/api/v1/events/internal', data=req) except requests.adapters.ConnectionError: logging.error( 'Tornado server does not seem to be running, check %s ' 'and %s for more information.', settings.ERROR_FILE_LOG_PATH, "tornado.log") raise requests.adapters.ConnectionError( "Django cannot connect to Tornado server (%s); try restarting" % (tornado_uri, )) resp.raise_for_status() return resp.json()['queue_id'] return None
def request_event_queue( user_profile: UserProfile, user_client: Client, apply_markdown: bool, client_gravatar: bool, slim_presence: bool, queue_lifespan_secs: int, event_types: Optional[Sequence[str]] = None, all_public_streams: bool = False, narrow: Iterable[Sequence[str]] = [], bulk_message_deletion: bool = False, stream_typing_notifications: bool = False, user_settings_object: bool = False, ) -> Optional[str]: if not settings.USING_TORNADO: return None tornado_uri = get_tornado_uri(user_profile.realm) req = { "dont_block": "true", "apply_markdown": orjson.dumps(apply_markdown), "client_gravatar": orjson.dumps(client_gravatar), "slim_presence": orjson.dumps(slim_presence), "all_public_streams": orjson.dumps(all_public_streams), "client": "internal", "user_profile_id": user_profile.id, "user_client": user_client.name, "narrow": orjson.dumps(narrow), "secret": settings.SHARED_SECRET, "lifespan_secs": queue_lifespan_secs, "bulk_message_deletion": orjson.dumps(bulk_message_deletion), "stream_typing_notifications": orjson.dumps(stream_typing_notifications), "user_settings_object": orjson.dumps(user_settings_object), } if event_types is not None: req["event_types"] = orjson.dumps(event_types) resp = requests_client().post(tornado_uri + "/api/v1/events/internal", data=req) return resp.json()["queue_id"]
def send_notification_http(realm: Realm, data: Mapping[str, Any]) -> None: if not settings.USING_TORNADO or settings.RUNNING_INSIDE_TORNADO: # To allow the backend test suite to not require a separate # Tornado process, we simply call the process_notification # handler directly rather than making the notify_tornado HTTP # request. It would perhaps be better to instead implement # this via some sort of `responses` module configuration, but # perhaps it's more readable to have the logic live here. # # We use an import local to this function to prevent this hack # from creating import cycles. from zerver.tornado.event_queue import process_notification process_notification(data) else: tornado_uri = get_tornado_uri(realm) requests_client().post( tornado_uri + "/notify_tornado", data=dict(data=orjson.dumps(data), secret=settings.SHARED_SECRET), )
def request_event_queue(user_profile: UserProfile, user_client: Client, apply_markdown: bool, client_gravatar: bool, queue_lifespan_secs: int, event_types: Optional[Iterable[str]]=None, all_public_streams: bool=False, narrow: Iterable[Sequence[str]]=[]) -> Optional[str]: if settings.TORNADO_SERVER: tornado_uri = get_tornado_uri(user_profile.realm) req = {'dont_block': 'true', 'apply_markdown': ujson.dumps(apply_markdown), 'client_gravatar': ujson.dumps(client_gravatar), 'all_public_streams': ujson.dumps(all_public_streams), 'client': 'internal', 'user_profile_id': user_profile.id, 'user_client': user_client.name, 'narrow': ujson.dumps(narrow), 'secret': settings.SHARED_SECRET, 'lifespan_secs': queue_lifespan_secs} if event_types is not None: req['event_types'] = ujson.dumps(event_types) try: resp = requests_client.post(tornado_uri + '/api/v1/events/internal', data=req) except requests.adapters.ConnectionError: logging.error('Tornado server does not seem to be running, check %s ' 'and %s for more information.' % (settings.ERROR_FILE_LOG_PATH, "tornado.log")) raise requests.adapters.ConnectionError( "Django cannot connect to Tornado server (%s); try restarting" % (tornado_uri,)) resp.raise_for_status() return extract_json_response(resp)['queue_id'] return None