#[derive(Debug, Clone, PartialEq)]
pub enum TaskApiV1 {
TaskCreate,
TaskGet(String),
TaskUpdate(String),
TaskDelete(String),
TaskComplete(String),
TaskUncomplete(String),
TaskList,
TaskFollowerCreate(String),
TaskFollowerDelete(String, String),
TaskFollowerList(String),
TaskFollowerBatchDelete(String),
TaskCollaboratorCreate(String),
TaskCollaboratorDelete(String, String),
TaskCollaboratorList(String),
TaskCollaboratorBatchDelete(String),
TaskReminderCreate(String),
TaskReminderDelete(String, String),
TaskReminderList(String),
TaskCommentCreate(String),
TaskCommentGet(String, String),
TaskCommentUpdate(String, String),
TaskCommentDelete(String, String),
TaskCommentList(String),
}
impl TaskApiV1 {
pub fn to_url(&self) -> String {
match self {
TaskApiV1::TaskCreate => "/open-apis/task/v1/tasks".to_string(),
TaskApiV1::TaskGet(task_id) => format!("/open-apis/task/v1/tasks/{task_id}"),
TaskApiV1::TaskUpdate(task_id) => format!("/open-apis/task/v1/tasks/{task_id}"),
TaskApiV1::TaskDelete(task_id) => format!("/open-apis/task/v1/tasks/{task_id}"),
TaskApiV1::TaskComplete(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/complete")
}
TaskApiV1::TaskUncomplete(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/uncomplete")
}
TaskApiV1::TaskList => "/open-apis/task/v1/tasks".to_string(),
TaskApiV1::TaskFollowerCreate(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/followers")
}
TaskApiV1::TaskFollowerDelete(task_id, follower_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/followers/{follower_id}")
}
TaskApiV1::TaskFollowerList(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/followers")
}
TaskApiV1::TaskFollowerBatchDelete(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/batch_delete_follower")
}
TaskApiV1::TaskCollaboratorCreate(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/collaborators")
}
TaskApiV1::TaskCollaboratorDelete(task_id, collaborator_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/collaborators/{collaborator_id}")
}
TaskApiV1::TaskCollaboratorList(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/collaborators")
}
TaskApiV1::TaskCollaboratorBatchDelete(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/batch_delete_collaborator")
}
TaskApiV1::TaskReminderCreate(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/reminders")
}
TaskApiV1::TaskReminderDelete(task_id, reminder_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/reminders/{reminder_id}")
}
TaskApiV1::TaskReminderList(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/reminders")
}
TaskApiV1::TaskCommentCreate(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/comments")
}
TaskApiV1::TaskCommentGet(task_id, comment_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/comments/{comment_id}")
}
TaskApiV1::TaskCommentUpdate(task_id, comment_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/comments/{comment_id}")
}
TaskApiV1::TaskCommentDelete(task_id, comment_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/comments/{comment_id}")
}
TaskApiV1::TaskCommentList(task_id) => {
format!("/open-apis/task/v1/tasks/{task_id}/comments")
}
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub enum TaskApiV2 {
TaskCreate,
TaskGet(String),
TaskUpdate(String),
TaskDelete(String),
TaskComplete(String),
TaskUncomplete(String),
TaskList,
TasklistCreate,
TasklistGet(String),
TasklistUpdate(String),
TasklistDelete(String),
TasklistList,
SectionCreate(String),
SectionGet(String, String),
SectionUpdate(String, String),
SectionDelete(String, String),
SectionList(String),
CustomFieldCreate(String),
CustomFieldGet(String, String),
CustomFieldUpdate(String, String),
CustomFieldDelete(String, String),
CustomFieldList(String),
CommentCreate(String),
CommentGet(String, String),
CommentUpdate(String, String),
CommentDelete(String, String),
CommentList(String),
AttachmentUpload(String),
AttachmentDelete(String, String),
SubtaskCreate(String),
SubtaskList(String),
TaskAddTasklist(String),
TaskRemoveTasklist(String),
TaskGetTasklists(String),
TaskAddMembers(String),
TaskRemoveMembers(String),
TaskAddReminders(String),
TaskRemoveReminders(String),
TaskAddDependencies(String),
TaskRemoveDependencies(String),
TasklistGetTasks(String),
TasklistAddMembers(String),
TasklistRemoveMembers(String),
SectionGetTasks(String),
ActivitySubscriptionCreate(String),
ActivitySubscriptionGet(String, String),
ActivitySubscriptionUpdate(String, String),
ActivitySubscriptionDelete(String, String),
ActivitySubscriptionList(String),
CustomFieldOptionCreate(String),
CustomFieldOptionUpdate(String, String),
AttachmentGet(String),
AttachmentList,
CustomFieldAdd(String),
CustomFieldRemove(String),
}
impl TaskApiV2 {
pub fn to_url(&self) -> String {
match self {
TaskApiV2::TaskCreate => "/open-apis/task/v2/tasks".to_string(),
TaskApiV2::TaskGet(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}")
}
TaskApiV2::TaskUpdate(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}")
}
TaskApiV2::TaskDelete(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}")
}
TaskApiV2::TaskComplete(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/complete")
}
TaskApiV2::TaskUncomplete(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/uncomplete")
}
TaskApiV2::TaskList => "/open-apis/task/v2/tasks".to_string(),
TaskApiV2::TasklistCreate => "/open-apis/task/v2/tasklists".to_string(),
TaskApiV2::TasklistGet(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
}
TaskApiV2::TasklistUpdate(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
}
TaskApiV2::TasklistDelete(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
}
TaskApiV2::TasklistList => "/open-apis/task/v2/tasklists".to_string(),
TaskApiV2::SectionCreate(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections")
}
TaskApiV2::SectionGet(tasklist_guid, section_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections/{section_guid}")
}
TaskApiV2::SectionUpdate(tasklist_guid, section_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections/{section_guid}")
}
TaskApiV2::SectionDelete(tasklist_guid, section_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections/{section_guid}")
}
TaskApiV2::SectionList(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections")
}
TaskApiV2::CustomFieldCreate(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields")
}
TaskApiV2::CustomFieldGet(tasklist_guid, field_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields/{field_guid}")
}
TaskApiV2::CustomFieldUpdate(tasklist_guid, field_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields/{field_guid}")
}
TaskApiV2::CustomFieldDelete(tasklist_guid, field_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields/{field_guid}")
}
TaskApiV2::CustomFieldList(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields")
}
TaskApiV2::CommentCreate(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/comments")
}
TaskApiV2::CommentGet(task_guid, comment_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/comments/{comment_guid}")
}
TaskApiV2::CommentUpdate(task_guid, comment_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/comments/{comment_guid}")
}
TaskApiV2::CommentDelete(task_guid, comment_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/comments/{comment_guid}")
}
TaskApiV2::CommentList(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/comments")
}
TaskApiV2::AttachmentUpload(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/attachments")
}
TaskApiV2::AttachmentDelete(task_guid, attachment_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/attachments/{attachment_guid}")
}
TaskApiV2::SubtaskCreate(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/subtasks")
}
TaskApiV2::SubtaskList(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/subtasks")
}
TaskApiV2::TaskAddTasklist(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/add_tasklist")
}
TaskApiV2::TaskRemoveTasklist(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/remove_tasklist")
}
TaskApiV2::TaskGetTasklists(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/tasklists")
}
TaskApiV2::TaskAddMembers(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/add_members")
}
TaskApiV2::TaskRemoveMembers(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/remove_members")
}
TaskApiV2::TaskAddReminders(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/add_reminders")
}
TaskApiV2::TaskRemoveReminders(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/remove_reminders")
}
TaskApiV2::TaskAddDependencies(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/add_dependencies")
}
TaskApiV2::TaskRemoveDependencies(task_guid) => {
format!("/open-apis/task/v2/tasks/{task_guid}/remove_dependencies")
}
TaskApiV2::TasklistGetTasks(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/tasks")
}
TaskApiV2::TasklistAddMembers(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/add_members")
}
TaskApiV2::TasklistRemoveMembers(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/remove_members")
}
TaskApiV2::SectionGetTasks(section_guid) => {
format!("/open-apis/task/v2/sections/{section_guid}/tasks")
}
TaskApiV2::ActivitySubscriptionCreate(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions")
}
TaskApiV2::ActivitySubscriptionGet(tasklist_guid, subscription_guid) => {
format!(
"/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
)
}
TaskApiV2::ActivitySubscriptionUpdate(tasklist_guid, subscription_guid) => {
format!(
"/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
)
}
TaskApiV2::ActivitySubscriptionDelete(tasklist_guid, subscription_guid) => {
format!(
"/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
)
}
TaskApiV2::ActivitySubscriptionList(tasklist_guid) => {
format!("/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions")
}
TaskApiV2::CustomFieldOptionCreate(custom_field_guid) => {
format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/options")
}
TaskApiV2::CustomFieldOptionUpdate(custom_field_guid, option_guid) => {
format!(
"/open-apis/task/v2/custom_fields/{custom_field_guid}/options/{option_guid}"
)
}
TaskApiV2::AttachmentGet(attachment_guid) => {
format!("/open-apis/task/v2/attachments/{attachment_guid}")
}
TaskApiV2::AttachmentList => "/open-apis/task/v2/attachments".to_string(),
TaskApiV2::CustomFieldAdd(custom_field_guid) => {
format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/add")
}
TaskApiV2::CustomFieldRemove(custom_field_guid) => {
format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/remove")
}
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub enum ApprovalApiV4 {
ApprovalCreate,
ApprovalGet(String),
ApprovalSubscribe(String),
ApprovalUnsubscribe(String),
ExternalApprovalCreate,
ExternalApprovalGet(String),
ExternalInstanceCheck,
ExternalInstanceCreate,
ExternalTaskList,
InstanceAddSign,
InstanceCancel,
InstanceCc,
InstanceCreate,
InstanceGet(String),
InstanceList(String),
InstancePreview,
InstanceQuery,
InstanceSearchCc,
InstanceSpecifiedRollback(String),
InstanceCommentCreate(String),
InstanceCommentDelete(String, String),
InstanceCommentList(String),
TaskApprove,
TaskQuery,
TaskReject,
TaskResubmit,
TaskSearch,
TaskTransfer,
}
impl ApprovalApiV4 {
pub fn to_url(&self) -> String {
match self {
ApprovalApiV4::ApprovalCreate => "/open-apis/approval/v4/approvals".to_string(),
ApprovalApiV4::ApprovalGet(approval_code) => {
format!("/open-apis/approval/v4/approvals/{approval_code}")
}
ApprovalApiV4::ApprovalSubscribe(approval_code) => {
format!("/open-apis/approval/v4/approvals/{approval_code}/subscribe")
}
ApprovalApiV4::ApprovalUnsubscribe(approval_code) => {
format!("/open-apis/approval/v4/approvals/{approval_code}/unsubscribe")
}
ApprovalApiV4::ExternalApprovalCreate => {
"/open-apis/approval/v4/external_approvals".to_string()
}
ApprovalApiV4::ExternalApprovalGet(approval_code) => {
format!("/open-apis/approval/v4/external_approvals/{approval_code}")
}
ApprovalApiV4::ExternalInstanceCheck => {
"/open-apis/approval/v4/external_instances/check".to_string()
}
ApprovalApiV4::ExternalInstanceCreate => {
"/open-apis/approval/v4/external_instances".to_string()
}
ApprovalApiV4::ExternalTaskList => "/open-apis/approval/v4/external_tasks".to_string(),
ApprovalApiV4::InstanceAddSign => {
"/open-apis/approval/v4/instances/add_sign".to_string()
}
ApprovalApiV4::InstanceCancel => "/open-apis/approval/v4/instances/cancel".to_string(),
ApprovalApiV4::InstanceCc => "/open-apis/approval/v4/instances/cc".to_string(),
ApprovalApiV4::InstanceCreate => "/open-apis/approval/v4/instances".to_string(),
ApprovalApiV4::InstanceGet(instance_id) => {
format!("/open-apis/approval/v4/instances/{instance_id}")
}
ApprovalApiV4::InstanceList(approval_code) => {
format!("/open-apis/approval/v4/instances?approval_code={approval_code}")
}
ApprovalApiV4::InstancePreview => {
"/open-apis/approval/v4/instances/preview".to_string()
}
ApprovalApiV4::InstanceQuery => "/open-apis/approval/v4/instances/query".to_string(),
ApprovalApiV4::InstanceSearchCc => {
"/open-apis/approval/v4/instances/search_cc".to_string()
}
ApprovalApiV4::InstanceSpecifiedRollback(_) => {
"/open-apis/approval/v4/instances/specified_rollback".to_string()
}
ApprovalApiV4::InstanceCommentCreate(instance_id) => {
format!("/open-apis/approval/v4/instances/{instance_id}/comments")
}
ApprovalApiV4::InstanceCommentDelete(instance_id, comment_id) => {
format!("/open-apis/approval/v4/instances/{instance_id}/comments/{comment_id}")
}
ApprovalApiV4::InstanceCommentList(instance_id) => {
format!("/open-apis/approval/v4/instances/{instance_id}/comments")
}
ApprovalApiV4::TaskApprove => "/open-apis/approval/v4/tasks/approve".to_string(),
ApprovalApiV4::TaskQuery => "/open-apis/approval/v4/tasks/query".to_string(),
ApprovalApiV4::TaskReject => "/open-apis/approval/v4/tasks/reject".to_string(),
ApprovalApiV4::TaskResubmit => "/open-apis/approval/v4/tasks/resubmit".to_string(),
ApprovalApiV4::TaskSearch => "/open-apis/approval/v4/tasks/search".to_string(),
ApprovalApiV4::TaskTransfer => "/open-apis/approval/v4/tasks/transfer".to_string(),
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub enum BoardApiV1 {
WhiteboardNodeCreate(String),
WhiteboardNodeList(String),
WhiteboardUpdateTheme(String),
WhiteboardTheme(String),
WhiteboardDownloadAsImage(String),
WhiteboardNodeCreatePlantuml(String),
}
impl BoardApiV1 {
pub fn to_url(&self) -> String {
match self {
BoardApiV1::WhiteboardNodeCreate(board_id) => {
format!("/open-apis/board/v1/whiteboards/{board_id}/nodes")
}
BoardApiV1::WhiteboardNodeList(board_id) => {
format!("/open-apis/board/v1/whiteboards/{board_id}/nodes")
}
BoardApiV1::WhiteboardUpdateTheme(board_id) => {
format!("/open-apis/board/v1/whiteboards/{board_id}/update_theme")
}
BoardApiV1::WhiteboardTheme(board_id) => {
format!("/open-apis/board/v1/whiteboards/{board_id}/theme")
}
BoardApiV1::WhiteboardDownloadAsImage(board_id) => {
format!("/open-apis/board/v1/whiteboards/{board_id}/download_as_image")
}
BoardApiV1::WhiteboardNodeCreatePlantuml(board_id) => {
format!("/open-apis/board/v1/whiteboards/{board_id}/nodes/plantuml")
}
}
}
}
#[cfg(test)]
#[allow(unused_imports)]
mod tests {
use super::*;
#[test]
fn test_task_api_v1_to_url() {
let cases = vec![
(
TaskApiV1::TaskCreate,
"/open-apis/task/v1/tasks".to_string(),
),
(
TaskApiV1::TaskGet("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1".to_string(),
),
(
TaskApiV1::TaskUpdate("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1".to_string(),
),
(
TaskApiV1::TaskDelete("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1".to_string(),
),
(
TaskApiV1::TaskComplete("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/complete".to_string(),
),
(
TaskApiV1::TaskUncomplete("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/uncomplete".to_string(),
),
(TaskApiV1::TaskList, "/open-apis/task/v1/tasks".to_string()),
(
TaskApiV1::TaskFollowerCreate("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/followers".to_string(),
),
(
TaskApiV1::TaskFollowerDelete("task_1".to_string(), "f1".to_string()),
"/open-apis/task/v1/tasks/task_1/followers/f1".to_string(),
),
(
TaskApiV1::TaskFollowerList("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/followers".to_string(),
),
(
TaskApiV1::TaskFollowerBatchDelete("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/batch_delete_follower".to_string(),
),
(
TaskApiV1::TaskCollaboratorCreate("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/collaborators".to_string(),
),
(
TaskApiV1::TaskCollaboratorDelete("task_1".to_string(), "c1".to_string()),
"/open-apis/task/v1/tasks/task_1/collaborators/c1".to_string(),
),
(
TaskApiV1::TaskCollaboratorList("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/collaborators".to_string(),
),
(
TaskApiV1::TaskCollaboratorBatchDelete("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/batch_delete_collaborator".to_string(),
),
(
TaskApiV1::TaskReminderCreate("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/reminders".to_string(),
),
(
TaskApiV1::TaskReminderDelete("task_1".to_string(), "r1".to_string()),
"/open-apis/task/v1/tasks/task_1/reminders/r1".to_string(),
),
(
TaskApiV1::TaskReminderList("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/reminders".to_string(),
),
(
TaskApiV1::TaskCommentCreate("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/comments".to_string(),
),
(
TaskApiV1::TaskCommentGet("task_1".to_string(), "cm1".to_string()),
"/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
),
(
TaskApiV1::TaskCommentUpdate("task_1".to_string(), "cm1".to_string()),
"/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
),
(
TaskApiV1::TaskCommentDelete("task_1".to_string(), "cm1".to_string()),
"/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
),
(
TaskApiV1::TaskCommentList("task_1".to_string()),
"/open-apis/task/v1/tasks/task_1/comments".to_string(),
),
];
for (api, expected) in cases {
assert_eq!(api.to_url(), expected);
}
}
#[test]
fn test_task_api_v2_to_url() {
let cases = vec![
(
TaskApiV2::TaskCreate,
"/open-apis/task/v2/tasks".to_string(),
),
(
TaskApiV2::TaskGet("t1".to_string()),
"/open-apis/task/v2/tasks/t1".to_string(),
),
(
TaskApiV2::TaskUpdate("t1".to_string()),
"/open-apis/task/v2/tasks/t1".to_string(),
),
(
TaskApiV2::TaskDelete("t1".to_string()),
"/open-apis/task/v2/tasks/t1".to_string(),
),
(
TaskApiV2::TaskComplete("t1".to_string()),
"/open-apis/task/v2/tasks/t1/complete".to_string(),
),
(
TaskApiV2::TaskUncomplete("t1".to_string()),
"/open-apis/task/v2/tasks/t1/uncomplete".to_string(),
),
(TaskApiV2::TaskList, "/open-apis/task/v2/tasks".to_string()),
(
TaskApiV2::TasklistCreate,
"/open-apis/task/v2/tasklists".to_string(),
),
(
TaskApiV2::TasklistGet("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1".to_string(),
),
(
TaskApiV2::TasklistUpdate("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1".to_string(),
),
(
TaskApiV2::TasklistDelete("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1".to_string(),
),
(
TaskApiV2::TasklistList,
"/open-apis/task/v2/tasklists".to_string(),
),
(
TaskApiV2::SectionCreate("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/sections".to_string(),
),
(
TaskApiV2::SectionGet("tl1".to_string(), "s1".to_string()),
"/open-apis/task/v2/tasklists/tl1/sections/s1".to_string(),
),
(
TaskApiV2::SectionUpdate("tl1".to_string(), "s1".to_string()),
"/open-apis/task/v2/tasklists/tl1/sections/s1".to_string(),
),
(
TaskApiV2::SectionDelete("tl1".to_string(), "s1".to_string()),
"/open-apis/task/v2/tasklists/tl1/sections/s1".to_string(),
),
(
TaskApiV2::SectionList("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/sections".to_string(),
),
(
TaskApiV2::CustomFieldCreate("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/custom_fields".to_string(),
),
(
TaskApiV2::CustomFieldGet("tl1".to_string(), "f1".to_string()),
"/open-apis/task/v2/tasklists/tl1/custom_fields/f1".to_string(),
),
(
TaskApiV2::CustomFieldUpdate("tl1".to_string(), "f1".to_string()),
"/open-apis/task/v2/tasklists/tl1/custom_fields/f1".to_string(),
),
(
TaskApiV2::CustomFieldDelete("tl1".to_string(), "f1".to_string()),
"/open-apis/task/v2/tasklists/tl1/custom_fields/f1".to_string(),
),
(
TaskApiV2::CustomFieldList("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/custom_fields".to_string(),
),
(
TaskApiV2::CommentCreate("t1".to_string()),
"/open-apis/task/v2/tasks/t1/comments".to_string(),
),
(
TaskApiV2::CommentGet("t1".to_string(), "c1".to_string()),
"/open-apis/task/v2/tasks/t1/comments/c1".to_string(),
),
(
TaskApiV2::CommentUpdate("t1".to_string(), "c1".to_string()),
"/open-apis/task/v2/tasks/t1/comments/c1".to_string(),
),
(
TaskApiV2::CommentDelete("t1".to_string(), "c1".to_string()),
"/open-apis/task/v2/tasks/t1/comments/c1".to_string(),
),
(
TaskApiV2::CommentList("t1".to_string()),
"/open-apis/task/v2/tasks/t1/comments".to_string(),
),
(
TaskApiV2::AttachmentUpload("t1".to_string()),
"/open-apis/task/v2/tasks/t1/attachments".to_string(),
),
(
TaskApiV2::AttachmentDelete("t1".to_string(), "a1".to_string()),
"/open-apis/task/v2/tasks/t1/attachments/a1".to_string(),
),
(
TaskApiV2::SubtaskCreate("t1".to_string()),
"/open-apis/task/v2/tasks/t1/subtasks".to_string(),
),
(
TaskApiV2::SubtaskList("t1".to_string()),
"/open-apis/task/v2/tasks/t1/subtasks".to_string(),
),
(
TaskApiV2::TaskAddTasklist("t1".to_string()),
"/open-apis/task/v2/tasks/t1/add_tasklist".to_string(),
),
(
TaskApiV2::TaskRemoveTasklist("t1".to_string()),
"/open-apis/task/v2/tasks/t1/remove_tasklist".to_string(),
),
(
TaskApiV2::TaskGetTasklists("t1".to_string()),
"/open-apis/task/v2/tasks/t1/tasklists".to_string(),
),
(
TaskApiV2::TaskAddMembers("t1".to_string()),
"/open-apis/task/v2/tasks/t1/add_members".to_string(),
),
(
TaskApiV2::TaskRemoveMembers("t1".to_string()),
"/open-apis/task/v2/tasks/t1/remove_members".to_string(),
),
(
TaskApiV2::TaskAddReminders("t1".to_string()),
"/open-apis/task/v2/tasks/t1/add_reminders".to_string(),
),
(
TaskApiV2::TaskRemoveReminders("t1".to_string()),
"/open-apis/task/v2/tasks/t1/remove_reminders".to_string(),
),
(
TaskApiV2::TaskAddDependencies("t1".to_string()),
"/open-apis/task/v2/tasks/t1/add_dependencies".to_string(),
),
(
TaskApiV2::TaskRemoveDependencies("t1".to_string()),
"/open-apis/task/v2/tasks/t1/remove_dependencies".to_string(),
),
(
TaskApiV2::TasklistGetTasks("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/tasks".to_string(),
),
(
TaskApiV2::TasklistAddMembers("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/add_members".to_string(),
),
(
TaskApiV2::TasklistRemoveMembers("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/remove_members".to_string(),
),
(
TaskApiV2::SectionGetTasks("s1".to_string()),
"/open-apis/task/v2/sections/s1/tasks".to_string(),
),
(
TaskApiV2::ActivitySubscriptionCreate("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/activity_subscriptions".to_string(),
),
(
TaskApiV2::ActivitySubscriptionGet("tl1".to_string(), "as1".to_string()),
"/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
),
(
TaskApiV2::ActivitySubscriptionUpdate("tl1".to_string(), "as1".to_string()),
"/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
),
(
TaskApiV2::ActivitySubscriptionDelete("tl1".to_string(), "as1".to_string()),
"/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
),
(
TaskApiV2::ActivitySubscriptionList("tl1".to_string()),
"/open-apis/task/v2/tasklists/tl1/activity_subscriptions".to_string(),
),
(
TaskApiV2::CustomFieldOptionCreate("cf1".to_string()),
"/open-apis/task/v2/custom_fields/cf1/options".to_string(),
),
(
TaskApiV2::CustomFieldOptionUpdate("cf1".to_string(), "op1".to_string()),
"/open-apis/task/v2/custom_fields/cf1/options/op1".to_string(),
),
(
TaskApiV2::AttachmentGet("a1".to_string()),
"/open-apis/task/v2/attachments/a1".to_string(),
),
(
TaskApiV2::AttachmentList,
"/open-apis/task/v2/attachments".to_string(),
),
(
TaskApiV2::CustomFieldAdd("cf1".to_string()),
"/open-apis/task/v2/custom_fields/cf1/add".to_string(),
),
(
TaskApiV2::CustomFieldRemove("cf1".to_string()),
"/open-apis/task/v2/custom_fields/cf1/remove".to_string(),
),
];
for (api, expected) in cases {
assert_eq!(api.to_url(), expected);
}
}
#[test]
fn test_approval_api_v4_to_url() {
let cases = vec![
(
ApprovalApiV4::ApprovalCreate,
"/open-apis/approval/v4/approvals".to_string(),
),
(
ApprovalApiV4::ApprovalGet("code1".to_string()),
"/open-apis/approval/v4/approvals/code1".to_string(),
),
(
ApprovalApiV4::ApprovalSubscribe("code1".to_string()),
"/open-apis/approval/v4/approvals/code1/subscribe".to_string(),
),
(
ApprovalApiV4::ApprovalUnsubscribe("code1".to_string()),
"/open-apis/approval/v4/approvals/code1/unsubscribe".to_string(),
),
(
ApprovalApiV4::ExternalApprovalCreate,
"/open-apis/approval/v4/external_approvals".to_string(),
),
(
ApprovalApiV4::ExternalApprovalGet("code1".to_string()),
"/open-apis/approval/v4/external_approvals/code1".to_string(),
),
(
ApprovalApiV4::ExternalInstanceCheck,
"/open-apis/approval/v4/external_instances/check".to_string(),
),
(
ApprovalApiV4::ExternalInstanceCreate,
"/open-apis/approval/v4/external_instances".to_string(),
),
(
ApprovalApiV4::ExternalTaskList,
"/open-apis/approval/v4/external_tasks".to_string(),
),
(
ApprovalApiV4::InstanceAddSign,
"/open-apis/approval/v4/instances/add_sign".to_string(),
),
(
ApprovalApiV4::InstanceCancel,
"/open-apis/approval/v4/instances/cancel".to_string(),
),
(
ApprovalApiV4::InstanceCc,
"/open-apis/approval/v4/instances/cc".to_string(),
),
(
ApprovalApiV4::InstanceCreate,
"/open-apis/approval/v4/instances".to_string(),
),
(
ApprovalApiV4::InstanceGet("ins1".to_string()),
"/open-apis/approval/v4/instances/ins1".to_string(),
),
(
ApprovalApiV4::InstanceList("code1".to_string()),
"/open-apis/approval/v4/instances?approval_code=code1".to_string(),
),
(
ApprovalApiV4::InstancePreview,
"/open-apis/approval/v4/instances/preview".to_string(),
),
(
ApprovalApiV4::InstanceQuery,
"/open-apis/approval/v4/instances/query".to_string(),
),
(
ApprovalApiV4::InstanceSearchCc,
"/open-apis/approval/v4/instances/search_cc".to_string(),
),
(
ApprovalApiV4::InstanceSpecifiedRollback("ins1".to_string()),
"/open-apis/approval/v4/instances/specified_rollback".to_string(),
),
(
ApprovalApiV4::InstanceCommentCreate("ins1".to_string()),
"/open-apis/approval/v4/instances/ins1/comments".to_string(),
),
(
ApprovalApiV4::InstanceCommentDelete("ins1".to_string(), "c1".to_string()),
"/open-apis/approval/v4/instances/ins1/comments/c1".to_string(),
),
(
ApprovalApiV4::InstanceCommentList("ins1".to_string()),
"/open-apis/approval/v4/instances/ins1/comments".to_string(),
),
(
ApprovalApiV4::TaskApprove,
"/open-apis/approval/v4/tasks/approve".to_string(),
),
(
ApprovalApiV4::TaskQuery,
"/open-apis/approval/v4/tasks/query".to_string(),
),
(
ApprovalApiV4::TaskReject,
"/open-apis/approval/v4/tasks/reject".to_string(),
),
(
ApprovalApiV4::TaskResubmit,
"/open-apis/approval/v4/tasks/resubmit".to_string(),
),
(
ApprovalApiV4::TaskSearch,
"/open-apis/approval/v4/tasks/search".to_string(),
),
(
ApprovalApiV4::TaskTransfer,
"/open-apis/approval/v4/tasks/transfer".to_string(),
),
];
for (api, expected) in cases {
assert_eq!(api.to_url(), expected);
}
}
#[test]
fn test_board_api_v1_to_url() {
let cases = vec![
(
BoardApiV1::WhiteboardNodeCreate("b1".to_string()),
"/open-apis/board/v1/whiteboards/b1/nodes".to_string(),
),
(
BoardApiV1::WhiteboardNodeList("b1".to_string()),
"/open-apis/board/v1/whiteboards/b1/nodes".to_string(),
),
(
BoardApiV1::WhiteboardUpdateTheme("b1".to_string()),
"/open-apis/board/v1/whiteboards/b1/update_theme".to_string(),
),
(
BoardApiV1::WhiteboardTheme("b1".to_string()),
"/open-apis/board/v1/whiteboards/b1/theme".to_string(),
),
(
BoardApiV1::WhiteboardDownloadAsImage("b1".to_string()),
"/open-apis/board/v1/whiteboards/b1/download_as_image".to_string(),
),
(
BoardApiV1::WhiteboardNodeCreatePlantuml("b1".to_string()),
"/open-apis/board/v1/whiteboards/b1/nodes/plantuml".to_string(),
),
];
for (api, expected) in cases {
assert_eq!(api.to_url(), expected);
}
}
#[test]
fn issue_194_workflow_new_endpoint_paths() {
assert_eq!(
crate::common::BoardV1Endpoint::WhiteboardNodeBatchDelete("board_123".to_string())
.to_url(),
"/open-apis/board/v1/whiteboards/board_123/nodes/batch_delete"
);
assert_eq!(
crate::common::TaskV2Endpoint::TaskSetAncestorTask("task_123".to_string()).to_url(),
"/open-apis/task/v2/tasks/task_123/set_ancestor_task"
);
assert_eq!(
crate::common::TaskV2Endpoint::ListRelatedTask.to_url(),
"/open-apis/task/v2/task_v2/list_related_task"
);
assert_eq!(
crate::common::TaskV2Endpoint::TaskSubscription.to_url(),
"/open-apis/task/v2/task_v2/task_subscription"
);
}
}