Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions getstream/chat/async_channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,25 @@ async def delete(
self._sync_from_response(response.data)
return response

@attach_channel_cid_async
async def get(
self,
state: Optional[bool] = None,
messages_limit: Optional[int] = None,
members_limit: Optional[int] = None,
watchers_limit: Optional[int] = None,
) -> StreamResponse[ChannelStateResponse]:
response = await self.client.get_channel(
type=self.channel_type,
id=self.channel_id,
state=state,
messages_limit=messages_limit,
members_limit=members_limit,
watchers_limit=watchers_limit,
)
self._sync_from_response(response.data)
return response

Comment on lines +34 to +52

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Align both channel wrappers with the promised get_channel API.

The REST clients correctly expose get_channel, but both public Channel wrappers are named get, so channel.get_channel(...) is unavailable.

  • getstream/chat/async_channel.py#L34-L52: rename the async get method to get_channel, or add a compatibility alias.
  • getstream/chat/channel.py#L34-L52: rename the sync get method to get_channel, or add a compatibility alias.
📍 Affects 2 files
  • getstream/chat/async_channel.py#L34-L52 (this comment)
  • getstream/chat/channel.py#L34-L52
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@getstream/chat/async_channel.py` around lines 34 - 52, Expose the promised
get_channel API on both Channel wrappers: rename or alias the async Channel.get
method in getstream/chat/async_channel.py lines 34-52 and the sync Channel.get
method in getstream/chat/channel.py lines 34-52 as get_channel, while preserving
existing get compatibility if needed.

@attach_channel_cid_async
async def update_channel_partial(
self,
Expand Down
29 changes: 29 additions & 0 deletions getstream/chat/async_rest_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,35 @@ async def delete_channel(
path_params=path_params,
)

@telemetry.operation_name("getstream.api.chat.get_channel")
async def get_channel(
self,
type: str,
id: str,
state: Optional[bool] = None,
messages_limit: Optional[int] = None,
members_limit: Optional[int] = None,
watchers_limit: Optional[int] = None,
) -> StreamResponse[ChannelStateResponse]:
query_params = build_query_param(
**{
"state": state,
"messages_limit": messages_limit,
"members_limit": members_limit,
"watchers_limit": watchers_limit,
}
)
path_params = {
"type": type,
"id": id,
}
return await self.get(
"/api/v2/chat/channels/{type}/{id}",
ChannelStateResponse,
query_params=query_params,
path_params=path_params,
)

@telemetry.operation_name("getstream.api.chat.update_channel_partial")
async def update_channel_partial(
self,
Expand Down
19 changes: 19 additions & 0 deletions getstream/chat/channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,25 @@ def delete(
self._sync_from_response(response.data)
return response

@attach_channel_cid
def get(
self,
state: Optional[bool] = None,
messages_limit: Optional[int] = None,
members_limit: Optional[int] = None,
watchers_limit: Optional[int] = None,
) -> StreamResponse[ChannelStateResponse]:
response = self.client.get_channel(
type=self.channel_type,
id=self.channel_id,
state=state,
messages_limit=messages_limit,
members_limit=members_limit,
watchers_limit=watchers_limit,
)
self._sync_from_response(response.data)
return response

@attach_channel_cid
def update_channel_partial(
self,
Expand Down
29 changes: 29 additions & 0 deletions getstream/chat/rest_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,35 @@ def delete_channel(
path_params=path_params,
)

@telemetry.operation_name("getstream.api.chat.get_channel")
def get_channel(
self,
type: str,
id: str,
state: Optional[bool] = None,
messages_limit: Optional[int] = None,
members_limit: Optional[int] = None,
watchers_limit: Optional[int] = None,
) -> StreamResponse[ChannelStateResponse]:
query_params = build_query_param(
**{
"state": state,
"messages_limit": messages_limit,
"members_limit": members_limit,
"watchers_limit": watchers_limit,
}
)
path_params = {
"type": type,
"id": id,
}
return self.get(
"/api/v2/chat/channels/{type}/{id}",
ChannelStateResponse,
query_params=query_params,
path_params=path_params,
)

@telemetry.operation_name("getstream.api.chat.update_channel_partial")
def update_channel_partial(
self,
Expand Down
2 changes: 2 additions & 0 deletions getstream/common/async_rest_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ async def update_app(
disable_permissions_checks: Optional[bool] = None,
enable_hook_payload_compression: Optional[bool] = None,
enforce_unique_usernames: Optional[str] = None,
feed_audit_logs_enabled: Optional[bool] = None,
feeds_moderation_enabled: Optional[bool] = None,
feeds_v2_region: Optional[str] = None,
guest_user_creation_disabled: Optional[bool] = None,
Expand Down Expand Up @@ -107,6 +108,7 @@ async def update_app(
disable_permissions_checks=disable_permissions_checks,
enable_hook_payload_compression=enable_hook_payload_compression,
enforce_unique_usernames=enforce_unique_usernames,
feed_audit_logs_enabled=feed_audit_logs_enabled,
feeds_moderation_enabled=feeds_moderation_enabled,
feeds_v2_region=feeds_v2_region,
guest_user_creation_disabled=guest_user_creation_disabled,
Expand Down
2 changes: 2 additions & 0 deletions getstream/common/rest_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ def update_app(
disable_permissions_checks: Optional[bool] = None,
enable_hook_payload_compression: Optional[bool] = None,
enforce_unique_usernames: Optional[str] = None,
feed_audit_logs_enabled: Optional[bool] = None,
feeds_moderation_enabled: Optional[bool] = None,
feeds_v2_region: Optional[str] = None,
guest_user_creation_disabled: Optional[bool] = None,
Expand Down Expand Up @@ -107,6 +108,7 @@ def update_app(
disable_permissions_checks=disable_permissions_checks,
enable_hook_payload_compression=enable_hook_payload_compression,
enforce_unique_usernames=enforce_unique_usernames,
feed_audit_logs_enabled=feed_audit_logs_enabled,
feeds_moderation_enabled=feeds_moderation_enabled,
feeds_v2_region=feeds_v2_region,
guest_user_creation_disabled=guest_user_creation_disabled,
Expand Down
79 changes: 79 additions & 0 deletions getstream/feeds/rest_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,34 @@ def query_activities(
"/api/v2/feeds/activities/query", QueryActivitiesResponse, json=json
)

@telemetry.operation_name("getstream.api.feeds.batch_query_activity_reactions")
def batch_query_activity_reactions(
self,
activity_ids: List[str],
limit: Optional[int] = None,
next: Optional[str] = None,
prev: Optional[str] = None,
user_id: Optional[str] = None,
sort: Optional[List[SortParamRequest]] = None,
filter: Optional[Dict[str, object]] = None,
user: Optional[UserRequest] = None,
) -> StreamResponse[BatchQueryActivityReactionsResponse]:
json = BatchQueryActivityReactionsRequest(
activity_ids=activity_ids,
limit=limit,
next=next,
prev=prev,
user_id=user_id,
sort=sort,
filter=filter,
user=user,
).to_dict()
return self.post(
"/api/v2/feeds/activities/reactions/query",
BatchQueryActivityReactionsResponse,
json=json,
)

@telemetry.operation_name("getstream.api.feeds.delete_bookmark")
def delete_bookmark(
self,
Expand Down Expand Up @@ -346,6 +374,7 @@ def add_activity_reaction(
enforce_unique: Optional[bool] = None,
skip_push: Optional[bool] = None,
user_id: Optional[str] = None,
target_feeds: Optional[List[str]] = None,
custom: Optional[Dict[str, object]] = None,
user: Optional[UserRequest] = None,
) -> StreamResponse[AddReactionResponse]:
Expand All @@ -360,6 +389,7 @@ def add_activity_reaction(
enforce_unique=enforce_unique,
skip_push=skip_push,
user_id=user_id,
target_feeds=target_feeds,
custom=custom,
user=user,
).to_dict()
Expand Down Expand Up @@ -418,6 +448,25 @@ def delete_activity_reaction(
path_params=path_params,
)

@telemetry.operation_name("getstream.api.feeds.query_activity_shares")
def query_activity_shares(
self,
activity_id: str,
limit: Optional[int] = None,
prev: Optional[str] = None,
next: Optional[str] = None,
) -> StreamResponse[QueryActivitySharesResponse]:
query_params = build_query_param(**{"limit": limit, "prev": prev, "next": next})
path_params = {
"activity_id": activity_id,
}
return self.get(
"/api/v2/feeds/activities/{activity_id}/shares",
QueryActivitySharesResponse,
query_params=query_params,
path_params=path_params,
)

@telemetry.operation_name("getstream.api.feeds.delete_activity")
def delete_activity(
self,
Expand Down Expand Up @@ -854,6 +903,34 @@ def query_comments(
"/api/v2/feeds/comments/query", QueryCommentsResponse, json=json
)

@telemetry.operation_name("getstream.api.feeds.batch_query_comment_reactions")
def batch_query_comment_reactions(
self,
comment_ids: List[str],
limit: Optional[int] = None,
next: Optional[str] = None,
prev: Optional[str] = None,
user_id: Optional[str] = None,
sort: Optional[List[SortParamRequest]] = None,
filter: Optional[Dict[str, object]] = None,
user: Optional[UserRequest] = None,
) -> StreamResponse[BatchQueryCommentReactionsResponse]:
json = BatchQueryCommentReactionsRequest(
comment_ids=comment_ids,
limit=limit,
next=next,
prev=prev,
user_id=user_id,
sort=sort,
filter=filter,
user=user,
).to_dict()
return self.post(
"/api/v2/feeds/comments/reactions/query",
BatchQueryCommentReactionsResponse,
json=json,
)

@telemetry.operation_name("getstream.api.feeds.delete_comment_bookmark")
def delete_comment_bookmark(
self,
Expand Down Expand Up @@ -1050,6 +1127,7 @@ def add_comment_reaction(
enforce_unique: Optional[bool] = None,
skip_push: Optional[bool] = None,
user_id: Optional[str] = None,
target_feeds: Optional[List[str]] = None,
custom: Optional[Dict[str, object]] = None,
user: Optional[UserRequest] = None,
) -> StreamResponse[AddCommentReactionResponse]:
Expand All @@ -1063,6 +1141,7 @@ def add_comment_reaction(
enforce_unique=enforce_unique,
skip_push=skip_push,
user_id=user_id,
target_feeds=target_feeds,
custom=custom,
user=user,
).to_dict()
Expand Down
Loading
Loading