use api::http::Router; use api::http::routing::{get, post, put}; use crate::handlers::assignees::add_pull_assignee::add_pull_assignee; use crate::handlers::assignees::list_pull_assignees::list_pull_assignees; use crate::handlers::assignees::remove_pull_assignee::remove_pull_assignee; use crate::handlers::checks::get_pull_checks::get_pull_checks; use crate::handlers::checks::get_pull_gate::get_pull_gate; use crate::handlers::comments::create_pull_comment::create_pull_comment; use crate::handlers::comments::delete_pull_comment::delete_pull_comment; use crate::handlers::comments::list_pull_comment_tree::list_pull_comment_tree; use crate::handlers::comments::list_pull_comments::list_pull_comments; use crate::handlers::comments::resolve_pull_comment::{ resolve_pull_comment, unresolve_pull_comment, }; use crate::handlers::comments::update_pull_comment::update_pull_comment; use crate::handlers::inbox::list_my_pulls; use crate::handlers::labels::attach_pull_label::attach_pull_label; use crate::handlers::labels::detach_pull_label::detach_pull_label; use crate::handlers::labels::list_label_options::list_label_options; use crate::handlers::labels::list_pull_labels::list_pull_labels; use crate::handlers::pulls::close_pull::close_pull; use crate::handlers::pulls::create_pull::create_pull; use crate::handlers::pulls::delete_pull::delete_pull; use crate::handlers::pulls::get_pull::get_pull; use crate::handlers::pulls::get_pull_files::get_pull_files; use crate::handlers::pulls::get_pull_patch::get_pull_patch; use crate::handlers::pulls::list_pull_commits::list_pull_commits; use crate::handlers::pulls::list_pull_events::list_pull_events; use crate::handlers::pulls::list_pulls::list_pulls; use crate::handlers::pulls::lock_pull::{lock_pull, unlock_pull}; use crate::handlers::pulls::merge_pull::merge_pull; use crate::handlers::pulls::refresh_pull_summary::refresh_pull_summary; use crate::handlers::pulls::reopen_pull::reopen_pull; use crate::handlers::pulls::update_branch_pull::update_branch_pull; use crate::handlers::pulls::update_pull::update_pull; use crate::handlers::relations::link_issue_pull::link_issue_pull; use crate::handlers::relations::list_issue_pulls::list_issue_pulls; use crate::handlers::relations::unlink_issue_pull::unlink_issue_pull; use crate::handlers::reviewers::delete_requested_reviewer::delete_requested_reviewer; use crate::handlers::reviewers::list_requested_reviewers::list_requested_reviewers; use crate::handlers::reviewers::request_reviewers::request_reviewers; use crate::handlers::reviews::dismiss_review::dismiss_review; use crate::handlers::reviews::get_review::get_review; use crate::handlers::reviews::list_reviews::list_reviews; use crate::handlers::reviews::publish_review::publish_review; use crate::handlers::reviews::submit_review::submit_review; const PULLS: &str = "/repos/{space_name}/{repo_name}/pulls"; const ITEM: &str = "/repos/{space_name}/{repo_name}/pulls/{pull_ref}"; const ISSUE_PULLS: &str = "/issues/{space_name}/boards/{board_id}/issues/{issue_id}/pulls"; pub fn router() -> Router { Router::new() .route(PULLS, get(list_pulls).post(create_pull)) .route(&format!("{PULLS}/label-options"), get(list_label_options)) .route(ITEM, get(get_pull).patch(update_pull).delete(delete_pull)) .route(&format!("{ITEM}/close"), post(close_pull)) .route(&format!("{ITEM}/reopen"), post(reopen_pull)) .route(&format!("{ITEM}/merge"), post(merge_pull)) .route(&format!("{ITEM}/commits"), get(list_pull_commits)) .route(&format!("{ITEM}/files"), get(get_pull_files)) .route(&format!("{ITEM}/patch"), get(get_pull_patch)) .route(&format!("{ITEM}/summary"), post(refresh_pull_summary)) .route(&format!("{ITEM}/events"), get(list_pull_events)) .route(&format!("{ITEM}/checks"), get(get_pull_checks)) .route(&format!("{ITEM}/gate"), get(get_pull_gate)) .route(&format!("{ITEM}/lock"), put(lock_pull).delete(unlock_pull)) .route(&format!("{ITEM}/update-branch"), post(update_branch_pull)) .route( &format!("{ITEM}/reviews"), get(list_reviews).post(submit_review), ) .route(&format!("{ITEM}/reviews/{{review_id}}"), get(get_review)) .route( &format!("{ITEM}/reviews/{{review_id}}/submit"), post(publish_review), ) .route( &format!("{ITEM}/reviews/{{review_id}}/dismiss"), put(dismiss_review), ) .route( &format!("{ITEM}/comments"), get(list_pull_comments).post(create_pull_comment), ) .route( &format!("{ITEM}/comments/tree"), get(list_pull_comment_tree), ) .route( &format!("{ITEM}/comments/{{comment_id}}"), api::http::routing::patch(update_pull_comment).delete(delete_pull_comment), ) .route( &format!("{ITEM}/comments/{{comment_id}}/resolve"), put(resolve_pull_comment).delete(unresolve_pull_comment), ) .route( &format!("{ITEM}/requested-reviewers"), get(list_requested_reviewers).post(request_reviewers), ) .route( &format!("{ITEM}/requested-reviewers/{{user_id}}"), api::http::routing::delete(delete_requested_reviewer), ) .route( &format!("{ITEM}/labels"), get(list_pull_labels).post(attach_pull_label), ) .route( &format!("{ITEM}/labels/{{label_ref}}"), api::http::routing::delete(detach_pull_label), ) .route(&format!("{ITEM}/assignees"), get(list_pull_assignees)) .route( &format!("{ITEM}/assignees/{{user_ref}}"), post(add_pull_assignee).delete(remove_pull_assignee), ) .route("/pulls/@me/{scope}", get(list_my_pulls)) .route(ISSUE_PULLS, get(list_issue_pulls).post(link_issue_pull)) .route( &format!("{ISSUE_PULLS}/{{relation_id}}"), api::http::routing::delete(unlink_issue_pull), ) }