Skip to content

Commit b70570b

Browse files
authored
Add users engagement API methods (#369)
1 parent 396c278 commit b70570b

3 files changed

Lines changed: 124 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from rocketchat_API.APISections.base import RocketChatBase
2+
3+
4+
class RocketChatUsersEngagement(RocketChatBase):
5+
def engagement_dashboard_new_users(self, start, end, **kwargs):
6+
"""
7+
Retrieve the metrics of newly registered users during a specific period.
8+
Permission required: view-engagement-dashboard
9+
"""
10+
return self.call_api_get(
11+
"engagement-dashboard/users/new-users",
12+
start=start,
13+
end=end,
14+
kwargs=kwargs,
15+
)
16+
17+
def engagement_dashboard_active_users(self, start, end, **kwargs):
18+
"""
19+
Retrieve the metrics of active users in the workspace during a specific period.
20+
Permission required: view-engagement-dashboard
21+
"""
22+
return self.call_api_get(
23+
"engagement-dashboard/users/active-users",
24+
start=start,
25+
end=end,
26+
kwargs=kwargs,
27+
)
28+
29+
def engagement_dashboard_chat_busier_hourly(self, start, **kwargs):
30+
"""
31+
Retrieve hourly data when chat is busier.
32+
Permission required: view-engagement-dashboard
33+
"""
34+
return self.call_api_get(
35+
"engagement-dashboard/users/chat-busier/hourly-data",
36+
start=start,
37+
kwargs=kwargs,
38+
)
39+
40+
def engagement_dashboard_chat_busier_weekly(self, start, **kwargs):
41+
"""
42+
Retrieves weekly data when chat is busier.
43+
Permission required: view-engagement-dashboard
44+
"""
45+
return self.call_api_get(
46+
"engagement-dashboard/users/chat-busier/weekly-data",
47+
start=start,
48+
kwargs=kwargs,
49+
)
50+
51+
def engagement_dashboard_users_by_time_of_day(self, start, end, **kwargs):
52+
"""
53+
Retrieve users by hours at a particular time of the day in a week.
54+
Permission required: view-engagement-dashboard
55+
"""
56+
return self.call_api_get(
57+
"engagement-dashboard/users/users-by-time-of-the-day-in-a-week",
58+
start=start,
59+
end=end,
60+
kwargs=kwargs,
61+
)

rocketchat_API/rocketchat.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from rocketchat_API.APISections.subscriptions import RocketChatSubscriptions
2121
from rocketchat_API.APISections.teams import RocketChatTeams
2222
from rocketchat_API.APISections.users import RocketChatUsers
23+
from rocketchat_API.APISections.users_engagement import RocketChatUsersEngagement
2324

2425

2526
class RocketChat(
@@ -43,5 +44,6 @@ class RocketChat(
4344
RocketChatSubscriptions,
4445
RocketChatTeams,
4546
RocketChatUsers,
47+
RocketChatUsersEngagement,
4648
):
4749
pass

tests/test_users_engagement.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from datetime import datetime, timedelta, timezone
2+
3+
import pytest
4+
5+
6+
@pytest.fixture()
7+
def date_range():
8+
end = datetime.now(timezone.utc)
9+
start = end - timedelta(days=7)
10+
return {
11+
"start": start.strftime("%Y-%m-%dT%H:%M:%S.000Z"),
12+
"end": end.strftime("%Y-%m-%dT%H:%M:%S.000Z"),
13+
}
14+
15+
16+
def test_engagement_dashboard_new_users(logged_rocket, skip_if_no_license, date_range):
17+
result = logged_rocket.engagement_dashboard_new_users(
18+
start=date_range["start"], end=date_range["end"]
19+
)
20+
assert "days" in result
21+
assert "period" in result
22+
assert "yesterday" in result
23+
assert isinstance(result["days"], list)
24+
assert isinstance(result["period"]["count"], int)
25+
26+
27+
def test_engagement_dashboard_active_users(
28+
logged_rocket, skip_if_no_license, date_range
29+
):
30+
result = logged_rocket.engagement_dashboard_active_users(
31+
start=date_range["start"], end=date_range["end"]
32+
)
33+
assert "month" in result
34+
35+
36+
def test_engagement_dashboard_chat_busier_hourly(
37+
logged_rocket, skip_if_no_license, date_range
38+
):
39+
result = logged_rocket.engagement_dashboard_chat_busier_hourly(
40+
start=date_range["start"]
41+
)
42+
assert "hours" in result
43+
44+
45+
def test_engagement_dashboard_chat_busier_weekly(
46+
logged_rocket, skip_if_no_license, date_range
47+
):
48+
result = logged_rocket.engagement_dashboard_chat_busier_weekly(
49+
start=date_range["start"]
50+
)
51+
assert "month" in result
52+
53+
54+
def test_engagement_dashboard_users_by_time_of_day(
55+
logged_rocket, skip_if_no_license, date_range
56+
):
57+
result = logged_rocket.engagement_dashboard_users_by_time_of_day(
58+
start=date_range["start"], end=date_range["end"]
59+
)
60+
assert "week" in result
61+
assert isinstance(result["week"], list)

0 commit comments

Comments
 (0)