use api::http::Router; use api::http::routing::{delete, get, post, put}; use crate::handlers::attachments::create_attachment::create_issue_attachment; use crate::handlers::attachments::delete_attachment::delete_issue_attachment; use crate::handlers::attachments::download_attachment::download_issue_attachment; use crate::handlers::attachments::finalize_attachment::finalize_issue_attachment; use crate::handlers::attachments::list_attachments::list_issue_attachments; use crate::handlers::boards::create_board::create_board; use crate::handlers::boards::delete_board::delete_board; use crate::handlers::boards::get_board::get_board; use crate::handlers::boards::list_boards::list_boards; use crate::handlers::boards::update_board::update_board; use crate::handlers::comments::create_comment::create_comment; use crate::handlers::comments::delete_comment::delete_comment; use crate::handlers::comments::get_comment::get_comment; use crate::handlers::comments::list_comments::list_comments; use crate::handlers::comments::update_comment::update_comment; use crate::handlers::content_history::list_content_history::list_content_history; use crate::handlers::dependencies::create_dependency::create_dependency; use crate::handlers::dependencies::delete_dependency::delete_dependency; use crate::handlers::dependencies::list_dependencies::list_dependencies; use crate::handlers::events::list_events::list_events; use crate::handlers::issue_users::list_issue_users::list_issue_users; use crate::handlers::issue_users::mark_issue_read::mark_issue_read; use crate::handlers::issues::close_issue::close_issue; use crate::handlers::issues::create_issue::create_issue; use crate::handlers::issues::delete_issue::delete_issue; use crate::handlers::issues::get_issue::get_issue; use crate::handlers::issues::list_issues::list_issues; use crate::handlers::issues::reopen_issue::reopen_issue; use crate::handlers::issues::update_issue::update_issue; use crate::handlers::labels::bind_label::bind_label; use crate::handlers::labels::create_label::create_label; use crate::handlers::labels::delete_label::delete_label; use crate::handlers::labels::get_label::get_label; use crate::handlers::labels::list_labels::list_labels; use crate::handlers::labels::list_labels_for_issue::list_labels_for_issue; use crate::handlers::labels::unbind_label::unbind_label; use crate::handlers::labels::update_label::update_label; use crate::handlers::members::create_member::create_member; use crate::handlers::members::delete_member::delete_member; use crate::handlers::members::list_members::list_issue_members; use crate::handlers::milestones::create_milestone::create_milestone; use crate::handlers::milestones::delete_milestone::delete_milestone; use crate::handlers::milestones::get_milestone::get_milestone; use crate::handlers::milestones::list_milestones::list_milestones; use crate::handlers::milestones::update_milestone::update_milestone; use crate::handlers::pins::create_pin::create_pin; use crate::handlers::pins::delete_pin::delete_pin; use crate::handlers::pins::list_pins::list_board_pins; use crate::handlers::reactions::add_comment_reaction::add_comment_reaction; use crate::handlers::reactions::add_reaction::add_issue_reaction; use crate::handlers::reactions::list_comment_reactions::list_comment_reactions; use crate::handlers::reactions::list_reactions::list_issue_reactions; use crate::handlers::reactions::remove_comment_reaction::remove_comment_reaction; use crate::handlers::reactions::remove_reaction::remove_issue_reaction; use crate::handlers::repo_relations::create_repo_relation::create_repo_relation; use crate::handlers::repo_relations::delete_repo_relation::delete_repo_relation; use crate::handlers::repo_relations::list_repo_relations::list_repo_relations; use crate::handlers::stopwatch::get_stopwatch::get_stopwatch; use crate::handlers::stopwatch::start_stopwatch::start_stopwatch; use crate::handlers::stopwatch::stop_stopwatch::stop_stopwatch; use crate::handlers::tracked_time::list_tracked_time::list_tracked_time; use crate::handlers::watches::upsert_watch::upsert_issue_watch; use crate::services::service::IssueService; pub fn protected(_service: IssueService) -> Router { Router::new() .route( "/issues/attachments", post(create_issue_attachment), ) .route( "/issues/attachments/{attachment_id}/finalize", post(finalize_issue_attachment), ) .route( "/issues/attachments/{attachment_id}", delete(delete_issue_attachment), ) .route( "/issues/attachments/{attachment_id}/file", get(download_issue_attachment), ) .route("/issues/{space_name}/boards", post(create_board).get(list_boards)) .route( "/issues/{space_name}/boards/{board_id}", get(get_board).patch(update_board).delete(delete_board), ) .route( "/issues/{space_name}/boards/{board_id}/issues", get(list_issues).post(create_issue), ) .route( "/issues/{space_name}/boards/{board_id}/issues/bulk", post(crate::handlers::issues::bulk_issues::bulk_issues), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}", get(get_issue).patch(update_issue).delete(delete_issue), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/attachments", get(list_issue_attachments), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/close", post(close_issue), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/reopen", post(reopen_issue), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments", get(list_comments).post(create_comment), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/tree", get(crate::handlers::comments::list_comments_tree::list_comments_tree), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}", get(get_comment) .patch(update_comment) .delete(delete_comment), ) .route( "/issues/{space_name}/boards/{board_id}/labels", get(list_labels).post(create_label), ) .route( "/issues/{space_name}/boards/{board_id}/labels/{label_id}", get(get_label).patch(update_label).delete(delete_label), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/labels", get(list_labels_for_issue), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/labels/{label_id}", post(bind_label).delete(unbind_label), ) .route( "/issues/{space_name}/boards/{board_id}/milestones", get(list_milestones).post(create_milestone), ) .route( "/issues/{space_name}/boards/{board_id}/milestones/{milestone_id}", get(get_milestone) .patch(update_milestone) .delete(delete_milestone), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/reactions", get(list_issue_reactions), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/reactions/@me", api::http::routing::put(add_issue_reaction).delete(remove_issue_reaction), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}/reactions", get(list_comment_reactions), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}/reactions/@me", api::http::routing::put(add_comment_reaction).delete(remove_comment_reaction), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/watch", put(upsert_issue_watch), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/members", get(list_issue_members).post(create_member), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/members/{member_id}", delete(delete_member), ) .route( "/issues/{space_name}/boards/{board_id}/pins", get(list_board_pins).post(create_pin), ) .route( "/issues/{space_name}/boards/{board_id}/pins/{pin_id}", delete(delete_pin).patch(crate::handlers::pins::update_pin::update_pin), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/events", get(list_events), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/dependencies", get(list_dependencies).post(create_dependency), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/dependents", get(crate::handlers::dependencies::list_dependents::list_dependents), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/dependencies/{dep_id}", delete(delete_dependency), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/history", get(list_content_history), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/stopwatch", get(get_stopwatch), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/stopwatch/start", post(start_stopwatch), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/stopwatch/stop", post(stop_stopwatch), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/times", get(list_tracked_time) .post(crate::handlers::tracked_time::create_tracked_time::create_tracked_time), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/times/{time_id}", api::http::routing::patch( crate::handlers::tracked_time::update_tracked_time::update_tracked_time, ) .delete(crate::handlers::tracked_time::delete_tracked_time::delete_tracked_time), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/users", get(list_issue_users), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/read-state", put(mark_issue_read), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/repos", get(list_repo_relations).post(create_repo_relation), ) .route( "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/repos/{rel_id}", delete(delete_repo_relation), ) }