|
21 | 21 |
|
22 | 22 | import logging |
23 | 23 | import os |
24 | | -from typing import Any, Optional |
| 24 | +from typing import Any |
25 | 25 |
|
26 | 26 | import attr |
27 | 27 |
|
@@ -134,11 +134,11 @@ class MediaUploadLimit: |
134 | 134 | time_period_ms: int |
135 | 135 | """The time period in milliseconds.""" |
136 | 136 |
|
137 | | - msc4335_info_uri: Optional[str] = None |
138 | | - """Used for experimental MSC4335 error code feature""" |
| 137 | + info_uri: str |
| 138 | + """The URI to return with the M_USER_LIMIT_EXCEEDED error.""" |
139 | 139 |
|
140 | | - msc4335_can_upgrade: Optional[bool] = None |
141 | | - """Used for experimental MSC4335 error code feature""" |
| 140 | + can_upgrade: bool = False |
| 141 | + """Whether the user can upgrade their plan to increase the limit. This is returned in the M_USER_LIMIT_EXCEEDED error.""" |
142 | 142 |
|
143 | 143 |
|
144 | 144 | class ContentRepositoryConfig(Config): |
@@ -314,23 +314,21 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None: |
314 | 314 | for limit_config in config.get("media_upload_limits", []): |
315 | 315 | time_period_ms = self.parse_duration(limit_config["time_period"]) |
316 | 316 | max_bytes = self.parse_size(limit_config["max_size"]) |
317 | | - msc4335_info_uri = limit_config.get("msc4335_info_uri", None) |
318 | | - msc4335_can_upgrade = limit_config.get("msc4335_can_upgrade", None) |
| 317 | + info_uri = limit_config.get("info_uri", "") |
| 318 | + can_upgrade = bool(limit_config.get("can_upgrade", False)) |
319 | 319 |
|
320 | | - if (msc4335_info_uri is not None or msc4335_can_upgrade is not None) and ( |
321 | | - not (msc4335_info_uri and msc4335_can_upgrade is not None) |
322 | | - ): |
323 | | - raise ConfigError( |
324 | | - "If any of msc4335_info_uri or msc4335_can_upgrade are set, then both msc4335_info_uri and " |
325 | | - "msc4335_can_upgrade must be set." |
| 320 | + if info_uri == "": |
| 321 | + logger.warning( |
| 322 | + "Empty info_uri provided for media upload limit, using static fallback value instead. You should specify an info_uri that points to more information about the upload limits imposed." |
326 | 323 | ) |
| 324 | + info_uri = "data:text/html,<p>You have exceeded a media upload limit. Ask your server administrator for more information.</p>" |
327 | 325 |
|
328 | 326 | self.media_upload_limits.append( |
329 | 327 | MediaUploadLimit( |
330 | 328 | max_bytes, |
331 | 329 | time_period_ms, |
332 | | - msc4335_info_uri, |
333 | | - msc4335_can_upgrade, |
| 330 | + info_uri, |
| 331 | + can_upgrade, |
334 | 332 | ) |
335 | 333 | ) |
336 | 334 |
|
|
0 commit comments