コード例 #1
0
ファイル: django_api.py プロジェクト: zhouzhiqi/zulip
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']
コード例 #2
0
ファイル: event_queue.py プロジェクト: dmryabov/zulip
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)
コード例 #3
0
ファイル: event_queue.py プロジェクト: BakerWang/zulip
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)
コード例 #4
0
ファイル: django_api.py プロジェクト: yushao2/zulip
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),
        )
コード例 #5
0
ファイル: event_queue.py プロジェクト: dmryabov/zulip
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 []
コード例 #6
0
ファイル: django_api.py プロジェクト: yushao2/zulip
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"]
コード例 #7
0
ファイル: django_api.py プロジェクト: uditp26/zulip
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']
コード例 #8
0
ファイル: event_queue.py プロジェクト: BakerWang/zulip
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 []
コード例 #9
0
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
コード例 #10
0
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"]
コード例 #11
0
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),
        )
コード例 #12
0
ファイル: event_queue.py プロジェクト: BakerWang/zulip
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