MatrixSynapse/synapse/config
Eric Eastwood 7b67e93d49
Provide more info why we don't have any thumbnails to serve (#13038)
Fix https://github.com/matrix-org/synapse/issues/13016

## New error code and status

### Before

Previously, we returned a `404` for `/thumbnail` which isn't even in the spec.

```json
{
  "errcode": "M_NOT_FOUND",
  "error": "Not found [b'hs1', b'tefQeZhmVxoiBfuFQUKRzJxc']"
}
```

### After

What does the spec say?

> 400: The request does not make sense to the server, or the server cannot thumbnail the content. For example, the client requested non-integer dimensions or asked for negatively-sized images.
>
> *-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixmediav3thumbnailservernamemediaid*

Now with this PR, we respond with a `400` when we don't have thumbnails to serve and we explain why we might not have any thumbnails.

```json
{
    "errcode": "M_UNKNOWN",
    "error": "Cannot find any thumbnails for the requested media ([b'example.com', b'12345']). This might mean the media is not a supported_media_format=(image/jpeg, image/jpg, image/webp, image/gif, image/png) or that thumbnailing failed for some other reason. (Dynamic thumbnails are disabled on this server.)",
}
```

> Cannot find any thumbnails for the requested media ([b'example.com', b'12345']). This might mean the media is not a supported_media_format=(image/jpeg, image/jpg, image/webp, image/gif, image/png) or that thumbnailing failed for some other reason. (Dynamic thumbnails are disabled on this server.)


---

We still respond with a 404 in many other places. But we can iterate on those later and maybe keep some in some specific places after spec updates/clarification: https://github.com/matrix-org/matrix-spec/issues/1122

We can also iterate on the bugs where Synapse doesn't thumbnail when it should in other issues/PRs.
2022-07-15 11:42:21 -05:00
..
__init__.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
__main__.py Additional type hints for config module. (#11465) 2021-12-01 07:28:23 -05:00
_base.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
_base.pyi Remove backing code for groups/communities (#12558) 2022-05-26 09:04:34 -04:00
_util.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
account_validity.py Add missing type hints to config classes. (#12402) 2022-04-11 12:07:23 -04:00
api.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
appservice.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
auth.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
background_updates.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
cache.py Allow dependency errors to pass through (#13113) 2022-06-30 19:48:04 +02:00
captcha.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
cas.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
consent.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
database.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
emailconfig.py Drop support for delegating email validation (#13192) 2022-07-12 19:18:53 +01:00
experimental.py Implement MSC3827: Filtering of `/publicRooms` by room type (#13031) 2022-06-29 17:12:45 +00:00
federation.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
groups.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
homeserver.py Remove backing code for groups/communities (#12558) 2022-05-26 09:04:34 -04:00
jwt.py Allow dependency errors to pass through (#13113) 2022-06-30 19:48:04 +02:00
key.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
logger.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
metrics.py Allow dependency errors to pass through (#13113) 2022-06-30 19:48:04 +02:00
modules.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
oembed.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
oidc.py Allow dependency errors to pass through (#13113) 2022-06-30 19:48:04 +02:00
password_auth_providers.py Add missing type hints to config classes. (#12402) 2022-04-11 12:07:23 -04:00
push.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
ratelimiting.py Rate limiting invites per issuer (#13125) 2022-06-30 09:44:47 +00:00
redis.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
registration.py Drop support for delegating email validation (#13192) 2022-07-12 19:18:53 +01:00
repository.py Provide more info why we don't have any thumbnails to serve (#13038) 2022-07-15 11:42:21 -05:00
retention.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
room.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
room_directory.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
saml2.py Allow dependency errors to pass through (#13113) 2022-06-30 19:48:04 +02:00
server.py Add custom well-known (#13035) 2022-06-16 11:48:18 +01:00
server_notices.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
spam_checker.py Add missing type hints to config classes. (#12402) 2022-04-11 12:07:23 -04:00
sso.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
stats.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
third_party_event_rules.py Add missing type hints to config classes. (#12402) 2022-04-11 12:07:23 -04:00
tls.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
tracer.py Allow dependency errors to pass through (#13113) 2022-06-30 19:48:04 +02:00
user_directory.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
voip.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00
workers.py Remove code generating comments in configuration file (#12941) 2022-06-14 07:53:42 -07:00