Skip to content
Clone
d75a986
258 lines 9.8 KB Rust
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<SpaceService> {
Router::<SpaceService>::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<SpaceService> {
Router::<SpaceService>::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),
)
}