api: Default `client_gravatar` to `true`.

Default `client_gravatar` to `true` for all endpoints passing the
parameter to avoid extra payload.

Fixes #11214.
This commit is contained in:
Gaurav Pandey 2021-08-05 23:18:43 +05:30 committed by Tim Abbott
parent 5459a92e4a
commit 067a32925d
9 changed files with 26 additions and 15 deletions

View File

@ -11,6 +11,14 @@ below features are supported.
## Changes in Zulip 5.0 ## Changes in Zulip 5.0
**Feature level 92**
* [`GET /messages`](/api/get-messages), [`POST
/register`](/api/register-queue), [`GET /users`](/api/get-users),
[`GET /users/{user_id}`](/api/get-user), [`GET
/users/{email}`](/api/get-user-by-email): The `client_gravatar`
parameter now defaults to `true`.
**Feature level 91** **Feature level 91**
* `PATCH /realm`, [`PATCH /streams/{stream_id}`](/api/update-stream): * `PATCH /realm`, [`PATCH /streams/{stream_id}`](/api/update-stream):
@ -178,7 +186,7 @@ below features are supported.
* [`GET /users`](/api/get-users), [`GET /users/{user_id}`](/api/get-user), * [`GET /users`](/api/get-users), [`GET /users/{user_id}`](/api/get-user),
[`GET /users/{email}`](/api/get-user-by-email) and [`GET /users/{email}`](/api/get-user-by-email) and
[`GET /users/me`](/api/get-own-user): Added `is_billing_admin` field to [`GET /users/me`](/api/get-own-Added): is `user_billing_admin` field to
returned user objects. returned user objects.
* [`GET /events`](/api/get-events): Added `is_billing_admin` field to * [`GET /events`](/api/get-events): Added `is_billing_admin` field to
user objects sent in `realm_user` events. user objects sent in `realm_user` events.

View File

@ -33,7 +33,7 @@ DESKTOP_WARNING_VERSION = "5.4.3"
# Changes should be accompanied by documentation explaining what the # Changes should be accompanied by documentation explaining what the
# new level means in templates/zerver/api/changelog.md, as well as # new level means in templates/zerver/api/changelog.md, as well as
# "**Changes**" entries in the endpoint's documentation in `zulip.yaml`. # "**Changes**" entries in the endpoint's documentation in `zulip.yaml`.
API_FEATURE_LEVEL = 91 API_FEATURE_LEVEL = 92
# Bump the minor PROVISION_VERSION to indicate that folks should provision # Bump the minor PROVISION_VERSION to indicate that folks should provision
# only when going from an old version of the code to a newer version. Bump # only when going from an old version of the code to a newer version. Bump

View File

@ -229,7 +229,7 @@ def get_members(client: Client) -> None:
# {code_example|start} # {code_example|start}
# You may pass the `client_gravatar` query parameter as follows: # You may pass the `client_gravatar` query parameter as follows:
result = client.get_members({"client_gravatar": True}) result = client.get_members({"client_gravatar": False})
# {code_example|end} # {code_example|end}
validate_against_openapi_schema(result, "/users", "get", "200") validate_against_openapi_schema(result, "/users", "get", "200")

View File

@ -14370,10 +14370,13 @@ components:
since gravatar URLs are long, random strings and thus do not since gravatar URLs are long, random strings and thus do not
compress well. The `client_gravatar` field is set to `true` if compress well. The `client_gravatar` field is set to `true` if
clients can compute their own gravatars. clients can compute their own gravatars.
**Changes**: The default value of this parameter was `false`
prior to Zulip 5.0 (feature level 92).
schema: schema:
type: boolean type: boolean
default: false default: true
example: true example: false
RequiredContent: RequiredContent:
name: content name: content
in: query in: query

View File

@ -1662,7 +1662,7 @@ class GetOldMessagesTest(ZulipTestCase):
self.send_personal_message(hamlet, self.example_user("iago")) self.send_personal_message(hamlet, self.example_user("iago"))
result = self.get_and_check_messages({}) result = self.get_and_check_messages(dict(client_gravatar=orjson.dumps(False).decode()))
message = result["messages"][0] message = result["messages"][0]
self.assertIn("gravatar.com", message["avatar_url"]) self.assertIn("gravatar.com", message["avatar_url"])

View File

@ -900,7 +900,7 @@ class TestCurlExampleGeneration(ZulipTestCase):
" --data-urlencode num_before=4 \\", " --data-urlencode num_before=4 \\",
" --data-urlencode num_after=8 \\", " --data-urlencode num_after=8 \\",
' --data-urlencode \'narrow=[{"operand": "Denmark", "operator": "stream"}]\' \\', ' --data-urlencode \'narrow=[{"operand": "Denmark", "operator": "stream"}]\' \\',
" --data-urlencode client_gravatar=true \\", " --data-urlencode client_gravatar=false \\",
" --data-urlencode apply_markdown=false \\", " --data-urlencode apply_markdown=false \\",
" --data-urlencode use_first_unread_anchor=true", " --data-urlencode use_first_unread_anchor=true",
"```", "```",

View File

@ -37,7 +37,7 @@ def events_register_backend(
request: HttpRequest, request: HttpRequest,
user_profile: UserProfile, user_profile: UserProfile,
apply_markdown: bool = REQ(default=False, json_validator=check_bool), apply_markdown: bool = REQ(default=False, json_validator=check_bool),
client_gravatar: bool = REQ(default=False, json_validator=check_bool), client_gravatar: bool = REQ(default=True, json_validator=check_bool),
slim_presence: bool = REQ(default=False, json_validator=check_bool), slim_presence: bool = REQ(default=False, json_validator=check_bool),
all_public_streams: Optional[bool] = REQ(default=None, json_validator=check_bool), all_public_streams: Optional[bool] = REQ(default=None, json_validator=check_bool),
include_subscribers: bool = REQ(default=False, json_validator=check_bool), include_subscribers: bool = REQ(default=False, json_validator=check_bool),

View File

@ -950,7 +950,7 @@ def get_messages_backend(
use_first_unread_anchor_val: bool = REQ( use_first_unread_anchor_val: bool = REQ(
"use_first_unread_anchor", json_validator=check_bool, default=False "use_first_unread_anchor", json_validator=check_bool, default=False
), ),
client_gravatar: bool = REQ(json_validator=check_bool, default=False), client_gravatar: bool = REQ(json_validator=check_bool, default=True),
apply_markdown: bool = REQ(json_validator=check_bool, default=True), apply_markdown: bool = REQ(json_validator=check_bool, default=True),
) -> HttpResponse: ) -> HttpResponse:
anchor = parse_anchor_value(anchor_val, use_first_unread_anchor_val) anchor = parse_anchor_value(anchor_val, use_first_unread_anchor_val)

View File

@ -527,13 +527,13 @@ def get_members_backend(
user_profile: UserProfile, user_profile: UserProfile,
user_id: Optional[int] = None, user_id: Optional[int] = None,
include_custom_profile_fields: bool = REQ(json_validator=check_bool, default=False), include_custom_profile_fields: bool = REQ(json_validator=check_bool, default=False),
client_gravatar: bool = REQ(json_validator=check_bool, default=False), client_gravatar: bool = REQ(json_validator=check_bool, default=True),
) -> HttpResponse: ) -> HttpResponse:
""" """
The client_gravatar field here is set to True if clients can compute The client_gravatar field here is set to True by default assuming that clients
their own gravatars, which saves us bandwidth. We want to eventually can compute their own gravatars, which saves bandwidth. This is more important of
make this the default behavior, but we have old clients that expect an optimization than it might seem because gravatar URLs contain MD5 hashes that
the server to compute this for us. compress very poorly compared to other data.
""" """
realm = user_profile.realm realm = user_profile.realm
if realm.email_address_visibility != Realm.EMAIL_ADDRESS_VISIBILITY_EVERYONE: if realm.email_address_visibility != Realm.EMAIL_ADDRESS_VISIBILITY_EVERYONE:
@ -650,7 +650,7 @@ def get_user_by_email(
user_profile: UserProfile, user_profile: UserProfile,
email: str, email: str,
include_custom_profile_fields: bool = REQ(json_validator=check_bool, default=False), include_custom_profile_fields: bool = REQ(json_validator=check_bool, default=False),
client_gravatar: bool = REQ(json_validator=check_bool, default=False), client_gravatar: bool = REQ(json_validator=check_bool, default=True),
) -> HttpResponse: ) -> HttpResponse:
realm = user_profile.realm realm = user_profile.realm