diff --git a/tildes/tildes/routes.py b/tildes/tildes/routes.py index 6d9b697..4d0b1dd 100644 --- a/tildes/tildes/routes.py +++ b/tildes/tildes/routes.py @@ -31,57 +31,50 @@ def includeme(config: Configurator) -> None: config.add_route("register", "/register") config.add_route("group", "/~{group_path}", factory=group_by_path) - config.add_route("new_topic", "/~{group_path}/new_topic", factory=group_by_path) + with config.route_prefix_context("/~{group_path}"): + config.add_route("new_topic", "/new_topic", factory=group_by_path) - config.add_route("group_topics", "/~{group_path}/topics", factory=group_by_path) + config.add_route("group_topics", "/topics", factory=group_by_path) - config.add_route( - "topic", "/~{group_path}/{topic_id36}*title", factory=topic_by_id36 - ) + config.add_route("topic", "/{topic_id36}*title", factory=topic_by_id36) config.add_route("user", "/user/{username}", factory=user_by_username) + with config.route_prefix_context("/user/{username}"): + config.add_route("new_message", "/new_message", factory=user_by_username) + config.add_route("user_messages", "/messages", factory=user_by_username) config.add_route("notifications", "/notifications", factory=LoggedInFactory) - config.add_route( - "notifications_unread", "/notifications/unread", factory=LoggedInFactory - ) + with config.route_prefix_context("/notifications"): + config.add_route("notifications_unread", "/unread", factory=LoggedInFactory) config.add_route("messages", "/messages", factory=LoggedInFactory) - config.add_route("messages_sent", "/messages/sent", factory=LoggedInFactory) - config.add_route("messages_unread", "/messages/unread", factory=LoggedInFactory) - config.add_route( - "message_conversation", - "/messages/conversations/{conversation_id36}", - factory=message_conversation_by_id36, - ) - config.add_route( - "new_message", "/user/{username}/new_message", factory=user_by_username - ) - config.add_route( - "user_messages", "/user/{username}/messages", factory=user_by_username - ) + with config.route_prefix_context("/messages"): + config.add_route("messages_sent", "/sent", factory=LoggedInFactory) + config.add_route("messages_unread", "/unread", factory=LoggedInFactory) + config.add_route( + "message_conversation", + "/conversations/{conversation_id36}", + factory=message_conversation_by_id36, + ) config.add_route("settings", "/settings", factory=LoggedInFactory) - config.add_route( - "settings_account_recovery", - "/settings/account_recovery", - factory=LoggedInFactory, - ) - config.add_route( - "settings_two_factor", "/settings/two_factor", factory=LoggedInFactory - ) - config.add_route( - "settings_two_factor_qr_code", - "/settings/two_factor/qr_code", - factory=LoggedInFactory, - ) - config.add_route( - "settings_comment_visits", "/settings/comment_visits", factory=LoggedInFactory - ) - config.add_route("settings_filters", "/settings/filters", factory=LoggedInFactory) - config.add_route( - "settings_password_change", "/settings/password_change", factory=LoggedInFactory - ) + with config.route_prefix_context("/settings"): + config.add_route( + "settings_account_recovery", "/account_recovery", factory=LoggedInFactory + ) + config.add_route("settings_two_factor", "/two_factor", factory=LoggedInFactory) + config.add_route( + "settings_two_factor_qr_code", + "/two_factor/qr_code", + factory=LoggedInFactory, + ) + config.add_route( + "settings_comment_visits", "/comment_visits", factory=LoggedInFactory + ) + config.add_route("settings_filters", "/filters", factory=LoggedInFactory) + config.add_route( + "settings_password_change", "/password_change", factory=LoggedInFactory + ) config.add_route("bookmarks", "/bookmarks", factory=LoggedInFactory) @@ -93,64 +86,44 @@ def includeme(config: Configurator) -> None: # Route for Stripe donation processing page (POSTed to from docs site) config.add_route("donate_stripe", "/donate_stripe") - add_intercooler_routes(config) + # Add all intercooler routes under the /api/web path + with config.route_prefix_context("/api/web"): + add_intercooler_routes(config) def add_intercooler_routes(config: Configurator) -> None: """Set up all routes for the (internal-use) Intercooler API endpoints.""" def add_ic_route(name: str, path: str, **kwargs: Any) -> None: - """Add route with intercooler name prefix, base path, header check.""" + """Add route with intercooler name prefix and header check.""" name = "ic_" + name - path = "/api/web" + path config.add_route(name, path, header="X-IC-Request:true", **kwargs) - add_ic_route( - "group_subscribe", "/group/{group_path}/subscribe", factory=group_by_path - ) - add_ic_route( - "group_user_settings", - "/group/{group_path}/user_settings", - factory=group_by_path, - ) + with config.route_prefix_context("/group/{group_path}"): + add_ic_route("group_subscribe", "/subscribe", factory=group_by_path) + add_ic_route("group_user_settings", "/user_settings", factory=group_by_path) add_ic_route("topic", "/topics/{topic_id36}", factory=topic_by_id36) - add_ic_route( - "topic_comments", "/topics/{topic_id36}/comments", factory=topic_by_id36 - ) - add_ic_route("topic_group", "/topics/{topic_id36}/group", factory=topic_by_id36) - add_ic_route("topic_lock", "/topics/{topic_id36}/lock", factory=topic_by_id36) - add_ic_route("topic_remove", "/topics/{topic_id36}/remove", factory=topic_by_id36) - add_ic_route("topic_title", "/topics/{topic_id36}/title", factory=topic_by_id36) - add_ic_route("topic_vote", "/topics/{topic_id36}/vote", factory=topic_by_id36) - add_ic_route("topic_tags", "/topics/{topic_id36}/tags", factory=topic_by_id36) - add_ic_route( - "topic_bookmark", "/topics/{topic_id36}/bookmark", factory=topic_by_id36 - ) + with config.route_prefix_context("/topics/{topic_id36}"): + add_ic_route("topic_comments", "/comments", factory=topic_by_id36) + add_ic_route("topic_group", "/group", factory=topic_by_id36) + add_ic_route("topic_lock", "/lock", factory=topic_by_id36) + add_ic_route("topic_remove", "/remove", factory=topic_by_id36) + add_ic_route("topic_title", "/title", factory=topic_by_id36) + add_ic_route("topic_vote", "/vote", factory=topic_by_id36) + add_ic_route("topic_tags", "/tags", factory=topic_by_id36) + add_ic_route("topic_bookmark", "/bookmark", factory=topic_by_id36) add_ic_route("comment", "/comments/{comment_id36}", factory=comment_by_id36) - add_ic_route( - "comment_remove", "/comments/{comment_id36}/remove", factory=comment_by_id36 - ) - add_ic_route( - "comment_replies", "/comments/{comment_id36}/replies", factory=comment_by_id36 - ) - add_ic_route( - "comment_vote", "/comments/{comment_id36}/vote", factory=comment_by_id36 - ) - add_ic_route( - "comment_label", - "/comments/{comment_id36}/labels/{name}", - factory=comment_by_id36, - ) - add_ic_route( - "comment_bookmark", "/comments/{comment_id36}/bookmark", factory=comment_by_id36 - ) - add_ic_route( - "comment_mark_read", - "/comments/{comment_id36}/mark_read", - factory=notification_by_comment_id36, - ) + with config.route_prefix_context("/comments/{comment_id36}"): + add_ic_route("comment_remove", "/remove", factory=comment_by_id36) + add_ic_route("comment_replies", "/replies", factory=comment_by_id36) + add_ic_route("comment_vote", "/vote", factory=comment_by_id36) + add_ic_route("comment_label", "/labels/{name}", factory=comment_by_id36) + add_ic_route("comment_bookmark", "/bookmark", factory=comment_by_id36) + add_ic_route( + "comment_mark_read", "/mark_read", factory=notification_by_comment_id36 + ) add_ic_route( "message_conversation_replies", @@ -159,19 +132,16 @@ def add_intercooler_routes(config: Configurator) -> None: ) add_ic_route("user", "/user/{username}", factory=user_by_username) - add_ic_route( - "user_filtered_topic_tags", - "/user/{username}/filtered_topic_tags", - factory=user_by_username, - ) - add_ic_route( - "user_invite_code", "/user/{username}/invite_code", factory=user_by_username - ) - add_ic_route( - "user_default_listing_options", - "/user/{username}/default_listing_options", - factory=user_by_username, - ) + with config.route_prefix_context("/user/{username}"): + add_ic_route( + "user_filtered_topic_tags", "/filtered_topic_tags", factory=user_by_username + ) + add_ic_route("user_invite_code", "/invite_code", factory=user_by_username) + add_ic_route( + "user_default_listing_options", + "/default_listing_options", + factory=user_by_username, + ) class LoggedInFactory: