2
2
3
3
from typing import Any
4
4
5
- from apify_shared .utils import ignore_docs
5
+ from apify_shared .utils import ignore_docs , parse_date_fields
6
6
7
+ from apify_client ._errors import ApifyApiError
8
+ from apify_client ._utils import catch_not_found_or_throw , pluck_data
7
9
from apify_client .clients .base import ResourceClient , ResourceClientAsync
8
10
9
11
@@ -27,10 +29,59 @@ def get(self: UserClient) -> dict | None:
27
29
https://docs.apify.com/api/v2#/reference/users
28
30
29
31
Returns:
30
- dict, optional: The retrieved user data, or None if the user does not exist.
32
+ The retrieved user data, or None if the user does not exist.
31
33
"""
32
34
return self ._get ()
33
35
36
+ def monthly_usage (self : UserClient ) -> dict | None :
37
+ """Return monthly usage of the user account.
38
+
39
+ This includes a complete usage summary for the current usage cycle, an overall sum, as well as a daily breakdown
40
+ of usage. It is the same information which is available on the account's Billing page. The information includes
41
+ use of storage, data transfer, and request queue usage.
42
+
43
+ https://docs.apify.com/api/v2/#/reference/users/monthly-usage
44
+
45
+ Returns:
46
+ The retrieved request, or None, if it did not exist.
47
+ """
48
+ try :
49
+ response = self .http_client .call (
50
+ url = self ._url ('usage/monthly' ),
51
+ method = 'GET' ,
52
+ params = self ._params (),
53
+ )
54
+ return parse_date_fields (pluck_data (response .json ()))
55
+
56
+ except ApifyApiError as exc :
57
+ catch_not_found_or_throw (exc )
58
+
59
+ return None
60
+
61
+ def limits (self : UserClient ) -> dict | None :
62
+ """Returns a complete summary of the user account's limits.
63
+
64
+ It is the same information which is available on the account's Limits page. The returned data includes the current
65
+ usage cycle, a summary of the account's limits, and the current usage.
66
+
67
+ https://docs.apify.com/api/v2#/reference/request-queues/request/get-request
68
+
69
+ Returns:
70
+ The retrieved request, or None, if it did not exist.
71
+ """
72
+ try :
73
+ response = self .http_client .call (
74
+ url = self ._url ('limits' ),
75
+ method = 'GET' ,
76
+ params = self ._params (),
77
+ )
78
+ return parse_date_fields (pluck_data (response .json ()))
79
+
80
+ except ApifyApiError as exc :
81
+ catch_not_found_or_throw (exc )
82
+
83
+ return None
84
+
34
85
35
86
class UserClientAsync (ResourceClientAsync ):
36
87
"""Async sub-client for querying user data."""
@@ -52,6 +103,55 @@ async def get(self: UserClientAsync) -> dict | None:
52
103
https://docs.apify.com/api/v2#/reference/users
53
104
54
105
Returns:
55
- dict, optional: The retrieved user data, or None if the user does not exist.
106
+ The retrieved user data, or None if the user does not exist.
56
107
"""
57
108
return await self ._get ()
109
+
110
+ async def monthly_usage (self : UserClientAsync ) -> dict | None :
111
+ """Return monthly usage of the user account.
112
+
113
+ This includes a complete usage summary for the current usage cycle, an overall sum, as well as a daily breakdown
114
+ of usage. It is the same information which is available on the account's Billing page. The information includes
115
+ use of storage, data transfer, and request queue usage.
116
+
117
+ https://docs.apify.com/api/v2/#/reference/users/monthly-usage
118
+
119
+ Returns:
120
+ The retrieved request, or None, if it did not exist.
121
+ """
122
+ try :
123
+ response = await self .http_client .call (
124
+ url = self ._url ('usage/monthly' ),
125
+ method = 'GET' ,
126
+ params = self ._params (),
127
+ )
128
+ return parse_date_fields (pluck_data (response .json ()))
129
+
130
+ except ApifyApiError as exc :
131
+ catch_not_found_or_throw (exc )
132
+
133
+ return None
134
+
135
+ async def limits (self : UserClientAsync ) -> dict | None :
136
+ """Returns a complete summary of the user account's limits.
137
+
138
+ It is the same information which is available on the account's Limits page. The returned data includes the current
139
+ usage cycle, a summary of the account's limits, and the current usage.
140
+
141
+ https://docs.apify.com/api/v2#/reference/request-queues/request/get-request
142
+
143
+ Returns:
144
+ The retrieved request, or None, if it did not exist.
145
+ """
146
+ try :
147
+ response = await self .http_client .call (
148
+ url = self ._url ('limits' ),
149
+ method = 'GET' ,
150
+ params = self ._params (),
151
+ )
152
+ return parse_date_fields (pluck_data (response .json ()))
153
+
154
+ except ApifyApiError as exc :
155
+ catch_not_found_or_throw (exc )
156
+
157
+ return None
0 commit comments