diff --git a/api/funkwhale_api/instance/nodeinfo.py b/api/funkwhale_api/instance/nodeinfo.py index 081773b53..f45fbb129 100644 --- a/api/funkwhale_api/instance/nodeinfo.py +++ b/api/funkwhale_api/instance/nodeinfo.py @@ -3,6 +3,7 @@ import memoize.djangocache import funkwhale_api from funkwhale_api.common import preferences from funkwhale_api.federation import actors +from funkwhale_api.music import utils as music_utils from . import stats @@ -34,6 +35,7 @@ def get(): "common__api_authentication_required" ), }, + "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, }, } if share_stats: diff --git a/api/funkwhale_api/music/utils.py b/api/funkwhale_api/music/utils.py index 574f4c8e1..5031e69ba 100644 --- a/api/funkwhale_api/music/utils.py +++ b/api/funkwhale_api/music/utils.py @@ -39,6 +39,10 @@ AUDIO_EXTENSIONS_AND_MIMETYPE = [ EXTENSION_TO_MIMETYPE = {ext: mt for ext, mt in AUDIO_EXTENSIONS_AND_MIMETYPE} MIMETYPE_TO_EXTENSION = {mt: ext for ext, mt in AUDIO_EXTENSIONS_AND_MIMETYPE} +SUPPORTED_EXTENSIONS = list( + sorted(set([ext for ext, _ in AUDIO_EXTENSIONS_AND_MIMETYPE])) +) + def get_ext_from_type(mimetype): return MIMETYPE_TO_EXTENSION.get(mimetype) diff --git a/api/tests/instance/test_nodeinfo.py b/api/tests/instance/test_nodeinfo.py index 90dc7e706..233b388d4 100644 --- a/api/tests/instance/test_nodeinfo.py +++ b/api/tests/instance/test_nodeinfo.py @@ -1,6 +1,7 @@ import funkwhale_api from funkwhale_api.instance import nodeinfo from funkwhale_api.federation import actors +from funkwhale_api.music import utils as music_utils def test_nodeinfo_dump(preferences, mocker): @@ -46,6 +47,7 @@ def test_nodeinfo_dump(preferences, mocker): "favorites": {"tracks": {"total": stats["track_favorites"]}}, "listenings": {"total": stats["listenings"]}, }, + "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, }, } assert nodeinfo.get() == expected @@ -76,6 +78,7 @@ def test_nodeinfo_dump_stats_disabled(preferences, mocker): "common__api_authentication_required" ], }, + "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, }, } assert nodeinfo.get() == expected diff --git a/changes/changelog.d/808.enhancement b/changes/changelog.d/808.enhancement new file mode 100644 index 000000000..8a114ee6d --- /dev/null +++ b/changes/changelog.d/808.enhancement @@ -0,0 +1 @@ +Advertise the list of supported upload extensions in the Nodeinfo endpoint (#808)