main
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<IssueService> {
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),
)
}