use api::http::Router; use api::http::routing::{delete, get, patch, post, put}; use crate::handlers::assign_group::assign_group; use crate::handlers::create_dir_node::create_dir_node; use crate::handlers::create_group::create_group; use crate::handlers::create_join_rule::create_join_rule; use crate::handlers::delete_group::delete_group; use crate::handlers::delete_join_rule::delete_join_rule; use crate::handlers::delete_space_image::delete_space_image; use crate::handlers::explore_spaces::{ approve_join_request, explore_spaces, list_join_requests, reject_join_request, }; use crate::handlers::get_group::get_group; use crate::handlers::get_space_dir_tree::get_space_dir_tree; use crate::handlers::get_space_image::get_space_image; use crate::handlers::get_space_image_file::get_space_image_file; use crate::handlers::join_group_self::join_group_self; use crate::handlers::join_requests::{create_join_request, withdraw_join_request}; use crate::handlers::leave_group_self::leave_group_self; use crate::handlers::list_dir_group_overwrites::list_dir_group_overwrites; use crate::handlers::list_dir_user_overwrites::list_dir_user_overwrites; use crate::handlers::list_groups::list_groups; use crate::handlers::list_join_rules::list_join_rules; use crate::handlers::move_dir_node::move_dir_node; use crate::handlers::remove_dir_group_overwrite::remove_dir_group_overwrite; use crate::handlers::remove_dir_user_overwrite::remove_dir_user_overwrite; use crate::handlers::repair_dir_parents::repair_dir_parents; use crate::handlers::set_dir_group_overwrite::set_dir_group_overwrite; use crate::handlers::set_dir_user_overwrite::set_dir_user_overwrite; use crate::handlers::unassign_group::unassign_group; use crate::handlers::update_dir_node::update_dir_node; use crate::handlers::update_group::update_group; use crate::handlers::update_join_rule::update_join_rule; use crate::handlers::upload_space_image::upload_space_image; use crate::services::service::SpaceService; pub fn public(_service: SpaceService) -> Router { Router::::new() .route("/spaces/explore", get(explore_spaces)) .route("/spaces/{space_name}/groups/{group_id}", get(get_group)) .route("/spaces/{space_name}/images/{kind}", get(get_space_image)) .route( "/spaces/{space_name}/images/{kind}/file", get(get_space_image_file), ) } pub fn protected(_service: SpaceService) -> Router { Router::::new() .route( "/spaces/{space_name}/images/{kind}", put(upload_space_image) .delete(delete_space_image) .payload_limit(crate::services::images::MAX_SPACE_IMAGE_BYTES + 1024 * 1024), ) .route( "/spaces/{space_name}/dir", post(create_dir_node).get(get_space_dir_tree), ) .route( "/spaces/{space_name}/dir/repair-parents", post(repair_dir_parents), ) .route("/spaces/{space_name}/dir/{dir_id}", patch(update_dir_node)) .route( "/spaces/{space_name}/dir/{dir_id}/position", patch(move_dir_node), ) .route( "/spaces/{space_name}/dir/{dir_id}/overwrites/groups", get(list_dir_group_overwrites), ) .route( "/spaces/{space_name}/dir/{dir_id}/overwrites/groups/{group_id}", put(set_dir_group_overwrite).delete(remove_dir_group_overwrite), ) .route( "/spaces/{space_name}/dir/{dir_id}/overwrites/users", get(list_dir_user_overwrites), ) .route( "/spaces/{space_name}/dir/{dir_id}/overwrites/users/{user_id}", put(set_dir_user_overwrite).delete(remove_dir_user_overwrite), ) .route( "/spaces/{space_name}/groups", post(create_group).get(list_groups), ) .route( "/spaces/{space_name}/groups/{group_id}", patch(update_group).delete(delete_group), ) .route( "/spaces/{space_name}/members/{user_id}/groups", post(assign_group), ) .route( "/spaces/{space_name}/groups/{group_id}/join", post(join_group_self).delete(leave_group_self), ) .route( "/spaces/{space_name}/join-rules", post(create_join_rule).get(list_join_rules), ) .route( "/spaces/{space_name}/join-rules/{rule_id}", patch(update_join_rule).delete(delete_join_rule), ) .route( "/spaces/{space_name}/members/{user_id}/groups/{group_id}", delete(unassign_group), ) .route( "/spaces/{space_name}/join-requests", post(create_join_request).get(list_join_requests), ) .route( "/spaces/{space_name}/join-requests/{request_id}", delete(withdraw_join_request), ) .route( "/spaces/{space_name}/join-requests/{request_id}/approve", post(approve_join_request), ) .route( "/spaces/{space_name}/join-requests/{request_id}/reject", post(reject_join_request), ) .route("/spaces", post(crate::handlers::space_admin::create_space)) .route("/spaces", get(crate::handlers::space_admin::list_spaces)) .route( "/spaces/invites/redeem", post(crate::handlers::space_admin::redeem_invite), ) .route( "/spaces/{space_name}", get(crate::handlers::space_admin::get_space), ) .route( "/spaces/{space_name}", patch(crate::handlers::space_admin::update_space), ) .route( "/spaces/{space_name}", delete(crate::handlers::space_admin::delete_space), ) .route( "/spaces/{space_name}/archive", post(crate::handlers::space_admin::archive_space), ) .route( "/spaces/{space_name}/restore", post(crate::handlers::space_admin::restore_space), ) .route( "/spaces/{space_name}/transfer", post(crate::handlers::space_admin::transfer_ownership), ) .route( "/spaces/{space_name}/leave", post(crate::handlers::space_admin::leave_organization), ) .route( "/spaces/{space_name}/members", get(crate::handlers::space_admin::list_members) .post(crate::handlers::space_admin::add_member), ) .route( "/spaces/{space_name}/members/@me", patch(crate::handlers::space_admin::update_self_member), ) .route( "/spaces/{space_name}/members/{member_id}", get(crate::handlers::space_admin::get_member) .patch(crate::handlers::space_admin::update_member) .delete(crate::handlers::space_admin::remove_member), ) .route( "/spaces/{space_name}/members/{member_id}/role", patch(crate::handlers::space_admin::set_member_role), ) .route( "/spaces/{space_name}/members/{member_id}/ban", post(crate::handlers::space_admin::ban_member), ) .route( "/spaces/{space_name}/members/{member_id}/unban", post(crate::handlers::space_admin::unban_member), ) .route( "/spaces/{space_name}/members/{member_id}/permissions", put(crate::handlers::space_admin::set_member_permissions), ) .route( "/spaces/{space_name}/bans", get(crate::handlers::space_admin::list_bans), ) .route( "/spaces/{space_name}/bans/{user_id}", get(crate::handlers::space_admin::get_ban) .patch(crate::handlers::space_admin::update_ban) .delete(crate::handlers::space_admin::unban_by_user), ) .route( "/spaces/{space_name}/invites", get(crate::handlers::space_admin::list_invites) .post(crate::handlers::space_admin::create_invite), ) .route( "/spaces/{space_name}/invites/{invite_id}", delete(crate::handlers::space_admin::revoke_invite), ) .route( "/spaces/{space_name}/roles", get(crate::handlers::space_admin::list_roles), ) .route( "/spaces/{space_name}/roles", post(crate::handlers::space_admin::create_role), ) .route( "/spaces/{space_name}/roles/assign", post(crate::handlers::space_admin::assign_role), ) .route( "/spaces/{space_name}/roles/unassign", post(crate::handlers::space_admin::unassign_role), ) .route( "/spaces/{space_name}/roles/{role_id}", get(crate::handlers::space_admin::get_role), ) .route( "/spaces/{space_name}/roles/{role_id}", patch(crate::handlers::space_admin::update_role), ) .route( "/spaces/{space_name}/roles/{role_id}/join", post(crate::handlers::space_admin::join_role), ) .route( "/spaces/{space_name}/roles/{role_id}/join", delete(crate::handlers::space_admin::leave_role), ) .route( "/spaces/{space_name}/roles/{role_id}", delete(crate::handlers::space_admin::delete_role), ) .route( "/spaces/{space_name}/roles/{role_id}/permissions", put(crate::handlers::space_admin::set_role_permissions), ) .route( "/spaces/{space_name}/permissions/check", post(crate::handlers::space_admin::check_permission), ) }