fix(api): Make trailing slashes for each endpoint optional

Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2766>
stable
Georg Krause 2024-02-26 11:33:52 +00:00 zatwierdzone przez Marge
rodzic 673db74dd2
commit 6b8bbc5f80
6 zmienionych plików z 18 dodań i 17 usunięć

Wyświetl plik

@ -34,10 +34,10 @@ if settings.DEBUG:
# This allows the error pages to be debugged during development, just visit
# these url in browser to see how these error pages look like.
urlpatterns += [
url(r"^400/$", default_views.bad_request),
url(r"^403/$", default_views.permission_denied),
url(r"^404/$", default_views.page_not_found),
url(r"^500/$", default_views.server_error),
url(r"^400/?$", default_views.bad_request),
url(r"^403/?$", default_views.permission_denied),
url(r"^404/?$", default_views.page_not_found),
url(r"^500/?$", default_views.server_error),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if "debug_toolbar" in settings.INSTALLED_APPS:

Wyświetl plik

@ -28,7 +28,7 @@ router.register(r"attachments", common_views.AttachmentViewSet, "attachments")
v1_patterns = router.urls
v1_patterns += [
url(r"^oembed/$", views.OembedView.as_view(), name="oembed"),
url(r"^oembed/?$", views.OembedView.as_view(), name="oembed"),
url(
r"^instance/",
include(("funkwhale_api.instance.urls", "instance"), namespace="instance"),

Wyświetl plik

@ -8,22 +8,22 @@ router = routers.OptionalSlashRouter()
router.register(r"search", views.SearchViewSet, "search")
urlpatterns = [
url(
"releases/(?P<uuid>[0-9a-z-]+)/$",
"releases/(?P<uuid>[0-9a-z-]+)/?$",
views.ReleaseDetail.as_view(),
name="release-detail",
),
url(
"artists/(?P<uuid>[0-9a-z-]+)/$",
"artists/(?P<uuid>[0-9a-z-]+)/?$",
views.ArtistDetail.as_view(),
name="artist-detail",
),
url(
"release-groups/browse/(?P<artist_uuid>[0-9a-z-]+)/$",
"release-groups/browse/(?P<artist_uuid>[0-9a-z-]+)/?$",
views.ReleaseGroupBrowse.as_view(),
name="release-group-browse",
),
url(
"releases/browse/(?P<release_group_uuid>[0-9a-z-]+)/$",
"releases/browse/(?P<release_group_uuid>[0-9a-z-]+)/?$",
views.ReleaseBrowse.as_view(),
name="release-browse",
),

Wyświetl plik

@ -10,7 +10,7 @@ router.register(r"apps", views.ApplicationViewSet, "apps")
router.register(r"grants", views.GrantViewSet, "grants")
urlpatterns = router.urls + [
url("^authorize/$", csrf_exempt(views.AuthorizeView.as_view()), name="authorize"),
url("^token/$", views.TokenView.as_view(), name="token"),
url("^revoke/$", views.RevokeTokenView.as_view(), name="revoke"),
url("^authorize/?$", csrf_exempt(views.AuthorizeView.as_view()), name="authorize"),
url("^token/?$", views.TokenView.as_view(), name="token"),
url("^revoke/?$", views.RevokeTokenView.as_view(), name="revoke"),
]

Wyświetl plik

@ -7,26 +7,26 @@ from . import views
urlpatterns = [
# URLs that do not require a session or valid token
url(
r"^password/reset/$",
r"^password/reset/?$",
views.PasswordResetView.as_view(),
name="rest_password_reset",
),
url(
r"^password/reset/confirm/$",
r"^password/reset/confirm/?$",
views.PasswordResetConfirmView.as_view(),
name="rest_password_reset_confirm",
),
# URLs that require a user to be logged in with a valid session / token.
url(
r"^user/$", rest_auth_views.UserDetailsView.as_view(), name="rest_user_details"
r"^user/?$", rest_auth_views.UserDetailsView.as_view(), name="rest_user_details"
),
url(
r"^password/change/$",
r"^password/change/?$",
views.PasswordChangeView.as_view(),
name="rest_password_change",
),
# Registration URLs
url(r"^registration/$", views.RegisterView.as_view(), name="rest_register"),
url(r"^registration/?$", views.RegisterView.as_view(), name="rest_register"),
url(
r"^registration/verify-email/?$",
views.VerifyEmailView.as_view(),

Wyświetl plik

@ -0,0 +1 @@
Make trailing slashes optional for all endpoints