1#[derive(Debug, Clone, PartialEq)]
7pub enum TaskApiV1 {
8 TaskCreate,
10 TaskGet(String),
12 TaskUpdate(String),
14 TaskDelete(String),
16 TaskComplete(String),
18 TaskUncomplete(String),
20 TaskList,
22 TaskFollowerCreate(String),
24 TaskFollowerDelete(String, String),
26 TaskFollowerList(String),
28 TaskFollowerBatchDelete(String),
30 TaskCollaboratorCreate(String),
32 TaskCollaboratorDelete(String, String),
34 TaskCollaboratorList(String),
36 TaskCollaboratorBatchDelete(String),
38 TaskReminderCreate(String),
40 TaskReminderDelete(String, String),
42 TaskReminderList(String),
44 TaskCommentCreate(String),
46 TaskCommentGet(String, String),
48 TaskCommentUpdate(String, String),
50 TaskCommentDelete(String, String),
52 TaskCommentList(String),
54}
55
56impl TaskApiV1 {
57 pub fn to_url(&self) -> String {
59 match self {
60 TaskApiV1::TaskCreate => "/open-apis/task/v1/tasks".to_string(),
61 TaskApiV1::TaskGet(task_id) => format!("/open-apis/task/v1/tasks/{task_id}"),
62 TaskApiV1::TaskUpdate(task_id) => format!("/open-apis/task/v1/tasks/{task_id}"),
63 TaskApiV1::TaskDelete(task_id) => format!("/open-apis/task/v1/tasks/{task_id}"),
64 TaskApiV1::TaskComplete(task_id) => {
65 format!("/open-apis/task/v1/tasks/{task_id}/complete")
66 }
67 TaskApiV1::TaskUncomplete(task_id) => {
68 format!("/open-apis/task/v1/tasks/{task_id}/uncomplete")
69 }
70 TaskApiV1::TaskList => "/open-apis/task/v1/tasks".to_string(),
71 TaskApiV1::TaskFollowerCreate(task_id) => {
72 format!("/open-apis/task/v1/tasks/{task_id}/followers")
73 }
74 TaskApiV1::TaskFollowerDelete(task_id, follower_id) => {
75 format!("/open-apis/task/v1/tasks/{task_id}/followers/{follower_id}")
76 }
77 TaskApiV1::TaskFollowerList(task_id) => {
78 format!("/open-apis/task/v1/tasks/{task_id}/followers")
79 }
80 TaskApiV1::TaskFollowerBatchDelete(task_id) => {
81 format!("/open-apis/task/v1/tasks/{task_id}/batch_delete_follower")
82 }
83 TaskApiV1::TaskCollaboratorCreate(task_id) => {
84 format!("/open-apis/task/v1/tasks/{task_id}/collaborators")
85 }
86 TaskApiV1::TaskCollaboratorDelete(task_id, collaborator_id) => {
87 format!("/open-apis/task/v1/tasks/{task_id}/collaborators/{collaborator_id}")
88 }
89 TaskApiV1::TaskCollaboratorList(task_id) => {
90 format!("/open-apis/task/v1/tasks/{task_id}/collaborators")
91 }
92 TaskApiV1::TaskCollaboratorBatchDelete(task_id) => {
93 format!("/open-apis/task/v1/tasks/{task_id}/batch_delete_collaborator")
94 }
95 TaskApiV1::TaskReminderCreate(task_id) => {
96 format!("/open-apis/task/v1/tasks/{task_id}/reminders")
97 }
98 TaskApiV1::TaskReminderDelete(task_id, reminder_id) => {
99 format!("/open-apis/task/v1/tasks/{task_id}/reminders/{reminder_id}")
100 }
101 TaskApiV1::TaskReminderList(task_id) => {
102 format!("/open-apis/task/v1/tasks/{task_id}/reminders")
103 }
104 TaskApiV1::TaskCommentCreate(task_id) => {
105 format!("/open-apis/task/v1/tasks/{task_id}/comments")
106 }
107 TaskApiV1::TaskCommentGet(task_id, comment_id) => {
108 format!("/open-apis/task/v1/tasks/{task_id}/comments/{comment_id}")
109 }
110 TaskApiV1::TaskCommentUpdate(task_id, comment_id) => {
111 format!("/open-apis/task/v1/tasks/{task_id}/comments/{comment_id}")
112 }
113 TaskApiV1::TaskCommentDelete(task_id, comment_id) => {
114 format!("/open-apis/task/v1/tasks/{task_id}/comments/{comment_id}")
115 }
116 TaskApiV1::TaskCommentList(task_id) => {
117 format!("/open-apis/task/v1/tasks/{task_id}/comments")
118 }
119 }
120 }
121}
122
123#[derive(Debug, Clone, PartialEq)]
125pub enum TaskApiV2 {
126 TaskCreate,
128 TaskGet(String),
130 TaskUpdate(String),
132 TaskDelete(String),
134 TaskComplete(String),
136 TaskUncomplete(String),
138 TaskList,
140 TasklistCreate,
142 TasklistGet(String),
144 TasklistUpdate(String),
146 TasklistDelete(String),
148 TasklistList,
150 SectionCreate,
152 SectionGet(String),
154 SectionUpdate(String),
156 SectionDelete(String),
158 SectionList,
160 CustomFieldCreate,
162 CustomFieldGet(String),
164 CustomFieldUpdate(String),
166 CustomFieldDelete(String),
168 CustomFieldList,
170 CommentCreate,
172 CommentGet(String),
174 CommentUpdate(String),
176 CommentDelete(String),
178 CommentList,
180 AttachmentUpload,
182 AttachmentDelete(String),
184
185 SubtaskCreate(String),
188 SubtaskList(String),
190
191 TaskAddTasklist(String),
194 TaskRemoveTasklist(String),
196 TaskGetTasklists(String),
198 TaskAddMembers(String),
200 TaskRemoveMembers(String),
202 TaskAddReminders(String),
204 TaskRemoveReminders(String),
206 TaskAddDependencies(String),
208 TaskRemoveDependencies(String),
210
211 TasklistGetTasks(String),
214 TasklistAddMembers(String),
216 TasklistRemoveMembers(String),
218
219 SectionGetTasks(String),
222
223 ActivitySubscriptionCreate(String),
226 ActivitySubscriptionGet(String, String),
228 ActivitySubscriptionUpdate(String, String),
230 ActivitySubscriptionDelete(String, String),
232 ActivitySubscriptionList(String),
234
235 CustomFieldOptionCreate(String),
238 CustomFieldOptionUpdate(String, String),
240
241 AttachmentGet(String),
244 AttachmentList,
246
247 CustomFieldAdd(String),
250 CustomFieldRemove(String),
252
253 TaskSearch,
256 TasklistSearch,
258}
259
260impl TaskApiV2 {
261 pub fn to_url(&self) -> String {
263 match self {
264 TaskApiV2::TaskCreate => "/open-apis/task/v2/tasks".to_string(),
266 TaskApiV2::TaskGet(task_guid) => {
267 format!("/open-apis/task/v2/tasks/{task_guid}")
268 }
269 TaskApiV2::TaskUpdate(task_guid) => {
270 format!("/open-apis/task/v2/tasks/{task_guid}")
271 }
272 TaskApiV2::TaskDelete(task_guid) => {
273 format!("/open-apis/task/v2/tasks/{task_guid}")
274 }
275 TaskApiV2::TaskComplete(task_guid) => {
276 format!("/open-apis/task/v2/tasks/{task_guid}/complete")
277 }
278 TaskApiV2::TaskUncomplete(task_guid) => {
279 format!("/open-apis/task/v2/tasks/{task_guid}/uncomplete")
280 }
281 TaskApiV2::TaskList => "/open-apis/task/v2/tasks".to_string(),
282
283 TaskApiV2::TasklistCreate => "/open-apis/task/v2/tasklists".to_string(),
285 TaskApiV2::TasklistGet(tasklist_guid) => {
286 format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
287 }
288 TaskApiV2::TasklistUpdate(tasklist_guid) => {
289 format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
290 }
291 TaskApiV2::TasklistDelete(tasklist_guid) => {
292 format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
293 }
294 TaskApiV2::TasklistList => "/open-apis/task/v2/tasklists".to_string(),
295
296 TaskApiV2::SectionCreate => "/open-apis/task/v2/sections".to_string(),
298 TaskApiV2::SectionGet(section_guid) => {
299 format!("/open-apis/task/v2/sections/{section_guid}")
300 }
301 TaskApiV2::SectionUpdate(section_guid) => {
302 format!("/open-apis/task/v2/sections/{section_guid}")
303 }
304 TaskApiV2::SectionDelete(section_guid) => {
305 format!("/open-apis/task/v2/sections/{section_guid}")
306 }
307 TaskApiV2::SectionList => "/open-apis/task/v2/sections".to_string(),
308
309 TaskApiV2::CustomFieldCreate => "/open-apis/task/v2/custom_fields".to_string(),
311 TaskApiV2::CustomFieldGet(field_guid) => {
312 format!("/open-apis/task/v2/custom_fields/{field_guid}")
313 }
314 TaskApiV2::CustomFieldUpdate(field_guid) => {
315 format!("/open-apis/task/v2/custom_fields/{field_guid}")
316 }
317 TaskApiV2::CustomFieldDelete(field_guid) => {
318 format!("/open-apis/task/v2/custom_fields/{field_guid}")
319 }
320 TaskApiV2::CustomFieldList => "/open-apis/task/v2/custom_fields".to_string(),
321
322 TaskApiV2::CommentCreate => "/open-apis/task/v2/comments".to_string(),
324 TaskApiV2::CommentGet(comment_id) => {
325 format!("/open-apis/task/v2/comments/{comment_id}")
326 }
327 TaskApiV2::CommentUpdate(comment_id) => {
328 format!("/open-apis/task/v2/comments/{comment_id}")
329 }
330 TaskApiV2::CommentDelete(comment_id) => {
331 format!("/open-apis/task/v2/comments/{comment_id}")
332 }
333 TaskApiV2::CommentList => "/open-apis/task/v2/comments".to_string(),
334
335 TaskApiV2::AttachmentUpload => "/open-apis/task/v2/attachments/upload".to_string(),
337 TaskApiV2::AttachmentDelete(attachment_guid) => {
338 format!("/open-apis/task/v2/attachments/{attachment_guid}")
339 }
340
341 TaskApiV2::SubtaskCreate(task_guid) => {
343 format!("/open-apis/task/v2/tasks/{task_guid}/subtasks")
344 }
345 TaskApiV2::SubtaskList(task_guid) => {
346 format!("/open-apis/task/v2/tasks/{task_guid}/subtasks")
347 }
348
349 TaskApiV2::TaskAddTasklist(task_guid) => {
351 format!("/open-apis/task/v2/tasks/{task_guid}/add_tasklist")
352 }
353 TaskApiV2::TaskRemoveTasklist(task_guid) => {
354 format!("/open-apis/task/v2/tasks/{task_guid}/remove_tasklist")
355 }
356 TaskApiV2::TaskGetTasklists(task_guid) => {
357 format!("/open-apis/task/v2/tasks/{task_guid}/tasklists")
358 }
359 TaskApiV2::TaskAddMembers(task_guid) => {
360 format!("/open-apis/task/v2/tasks/{task_guid}/add_members")
361 }
362 TaskApiV2::TaskRemoveMembers(task_guid) => {
363 format!("/open-apis/task/v2/tasks/{task_guid}/remove_members")
364 }
365 TaskApiV2::TaskAddReminders(task_guid) => {
366 format!("/open-apis/task/v2/tasks/{task_guid}/add_reminders")
367 }
368 TaskApiV2::TaskRemoveReminders(task_guid) => {
369 format!("/open-apis/task/v2/tasks/{task_guid}/remove_reminders")
370 }
371 TaskApiV2::TaskAddDependencies(task_guid) => {
372 format!("/open-apis/task/v2/tasks/{task_guid}/add_dependencies")
373 }
374 TaskApiV2::TaskRemoveDependencies(task_guid) => {
375 format!("/open-apis/task/v2/tasks/{task_guid}/remove_dependencies")
376 }
377
378 TaskApiV2::TasklistGetTasks(tasklist_guid) => {
380 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/tasks")
381 }
382 TaskApiV2::TasklistAddMembers(tasklist_guid) => {
383 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/add_members")
384 }
385 TaskApiV2::TasklistRemoveMembers(tasklist_guid) => {
386 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/remove_members")
387 }
388
389 TaskApiV2::SectionGetTasks(section_guid) => {
391 format!("/open-apis/task/v2/sections/{section_guid}/tasks")
392 }
393
394 TaskApiV2::ActivitySubscriptionCreate(tasklist_guid) => {
396 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions")
397 }
398 TaskApiV2::ActivitySubscriptionGet(tasklist_guid, subscription_guid) => {
399 format!(
400 "/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
401 )
402 }
403 TaskApiV2::ActivitySubscriptionUpdate(tasklist_guid, subscription_guid) => {
404 format!(
405 "/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
406 )
407 }
408 TaskApiV2::ActivitySubscriptionDelete(tasklist_guid, subscription_guid) => {
409 format!(
410 "/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
411 )
412 }
413 TaskApiV2::ActivitySubscriptionList(tasklist_guid) => {
414 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions")
415 }
416
417 TaskApiV2::CustomFieldOptionCreate(custom_field_guid) => {
419 format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/options")
420 }
421 TaskApiV2::CustomFieldOptionUpdate(custom_field_guid, option_guid) => {
422 format!(
423 "/open-apis/task/v2/custom_fields/{custom_field_guid}/options/{option_guid}"
424 )
425 }
426
427 TaskApiV2::AttachmentGet(attachment_guid) => {
429 format!("/open-apis/task/v2/attachments/{attachment_guid}")
430 }
431 TaskApiV2::AttachmentList => "/open-apis/task/v2/attachments".to_string(),
432
433 TaskApiV2::CustomFieldAdd(custom_field_guid) => {
435 format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/add")
436 }
437 TaskApiV2::CustomFieldRemove(custom_field_guid) => {
438 format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/remove")
439 }
440
441 TaskApiV2::TaskSearch => "/open-apis/task/v2/tasks/search".to_string(),
443 TaskApiV2::TasklistSearch => "/open-apis/task/v2/tasklists/search".to_string(),
444 }
445 }
446}
447
448#[derive(Debug, Clone, PartialEq)]
450pub enum ApprovalApiV4 {
451 ApprovalCreate,
453 ApprovalGet(String),
455 ApprovalSubscribe(String),
457 ApprovalUnsubscribe(String),
459 ExternalApprovalCreate,
461 ExternalApprovalGet(String),
463 ExternalInstanceCheck,
465 ExternalInstanceCreate,
467 ExternalTaskList,
469 InstanceAddSign,
471 InstanceAddCc,
473 InstanceCancel,
475 InstanceCc,
477 InstanceCreate,
479 InstanceDetail,
481 InstanceGet(String),
483 InstanceInitiated,
485 InstanceList(String),
487 InstancePreview,
489 InstanceQuery,
491 InstanceSearchCc,
493 InstanceRemind,
495 InstanceRecall,
497 InstanceSpecifiedRollback(String),
499 InstanceSubscribe,
501 InstanceUnsubscribe,
503 InstanceCommentCreate(String),
505 InstanceCommentDelete(String, String),
507 InstanceCommentList(String),
509 TaskAddSign,
511 TaskApprove,
513 TaskForward,
515 TaskList,
517 TaskPass,
519 TaskQuery,
521 TaskRefuse,
523 TaskReject,
525 TaskRollback,
527 TaskResubmit,
529 TaskSearch,
531 TaskTransfer,
533 TaskSubscribe,
535 TaskUnsubscribe,
537}
538
539impl ApprovalApiV4 {
540 pub fn to_url(&self) -> String {
542 match self {
543 ApprovalApiV4::ApprovalCreate => "/open-apis/approval/v4/approvals".to_string(),
545 ApprovalApiV4::ApprovalGet(approval_code) => {
546 format!("/open-apis/approval/v4/approvals/{approval_code}")
547 }
548 ApprovalApiV4::ApprovalSubscribe(approval_code) => {
549 format!("/open-apis/approval/v4/approvals/{approval_code}/subscribe")
550 }
551 ApprovalApiV4::ApprovalUnsubscribe(approval_code) => {
552 format!("/open-apis/approval/v4/approvals/{approval_code}/unsubscribe")
553 }
554
555 ApprovalApiV4::ExternalApprovalCreate => {
557 "/open-apis/approval/v4/external_approvals".to_string()
558 }
559 ApprovalApiV4::ExternalApprovalGet(approval_code) => {
560 format!("/open-apis/approval/v4/external_approvals/{approval_code}")
561 }
562
563 ApprovalApiV4::ExternalInstanceCheck => {
565 "/open-apis/approval/v4/external_instances/check".to_string()
566 }
567 ApprovalApiV4::ExternalInstanceCreate => {
568 "/open-apis/approval/v4/external_instances".to_string()
569 }
570
571 ApprovalApiV4::ExternalTaskList => "/open-apis/approval/v4/external_tasks".to_string(),
573
574 ApprovalApiV4::InstanceAddSign => {
576 "/open-apis/approval/v4/instances/add_sign".to_string()
577 }
578 ApprovalApiV4::InstanceAddCc => "/open-apis/approval/v4/instances/add_cc".to_string(),
579 ApprovalApiV4::InstanceCancel => "/open-apis/approval/v4/instances/cancel".to_string(),
580 ApprovalApiV4::InstanceCc => "/open-apis/approval/v4/instances/cc".to_string(),
581 ApprovalApiV4::InstanceCreate => "/open-apis/approval/v4/instances".to_string(),
582 ApprovalApiV4::InstanceDetail => "/open-apis/approval/v4/instances/detail".to_string(),
583 ApprovalApiV4::InstanceGet(instance_id) => {
584 format!("/open-apis/approval/v4/instances/{instance_id}")
585 }
586 ApprovalApiV4::InstanceInitiated => {
587 "/open-apis/approval/v4/instances/initiated".to_string()
588 }
589 ApprovalApiV4::InstanceList(approval_code) => {
590 format!("/open-apis/approval/v4/instances?approval_code={approval_code}")
591 }
592 ApprovalApiV4::InstancePreview => {
593 "/open-apis/approval/v4/instances/preview".to_string()
594 }
595 ApprovalApiV4::InstanceQuery => "/open-apis/approval/v4/instances/query".to_string(),
596 ApprovalApiV4::InstanceSearchCc => {
597 "/open-apis/approval/v4/instances/search_cc".to_string()
598 }
599 ApprovalApiV4::InstanceRemind => "/open-apis/approval/v4/instances/remind".to_string(),
600 ApprovalApiV4::InstanceRecall => "/open-apis/approval/v4/instances/recall".to_string(),
601 ApprovalApiV4::InstanceSpecifiedRollback(_) => {
602 "/open-apis/approval/v4/instances/specified_rollback".to_string()
603 }
604 ApprovalApiV4::InstanceSubscribe | ApprovalApiV4::InstanceUnsubscribe => {
605 "/open-apis/approval/v4/instances/subscription".to_string()
606 }
607
608 ApprovalApiV4::InstanceCommentCreate(instance_id) => {
610 format!("/open-apis/approval/v4/instances/{instance_id}/comments")
611 }
612 ApprovalApiV4::InstanceCommentDelete(instance_id, comment_id) => {
613 format!("/open-apis/approval/v4/instances/{instance_id}/comments/{comment_id}")
614 }
615 ApprovalApiV4::InstanceCommentList(instance_id) => {
616 format!("/open-apis/approval/v4/instances/{instance_id}/comments")
617 }
618
619 ApprovalApiV4::TaskAddSign => "/open-apis/approval/v4/tasks/add_sign".to_string(),
621 ApprovalApiV4::TaskApprove => "/open-apis/approval/v4/tasks/approve".to_string(),
622 ApprovalApiV4::TaskForward => "/open-apis/approval/v4/tasks/forward".to_string(),
623 ApprovalApiV4::TaskList => "/open-apis/approval/v4/tasks".to_string(),
624 ApprovalApiV4::TaskPass => "/open-apis/approval/v4/tasks/pass".to_string(),
625 ApprovalApiV4::TaskQuery => "/open-apis/approval/v4/tasks/query".to_string(),
626 ApprovalApiV4::TaskRefuse => "/open-apis/approval/v4/tasks/refuse".to_string(),
627 ApprovalApiV4::TaskReject => "/open-apis/approval/v4/tasks/reject".to_string(),
628 ApprovalApiV4::TaskRollback => "/open-apis/approval/v4/tasks/rollback".to_string(),
629 ApprovalApiV4::TaskResubmit => "/open-apis/approval/v4/tasks/resubmit".to_string(),
630 ApprovalApiV4::TaskSearch => "/open-apis/approval/v4/tasks/search".to_string(),
631 ApprovalApiV4::TaskTransfer => "/open-apis/approval/v4/tasks/transfer".to_string(),
632 ApprovalApiV4::TaskSubscribe | ApprovalApiV4::TaskUnsubscribe => {
633 "/open-apis/approval/v4/tasks/subscription".to_string()
634 }
635 }
636 }
637}
638
639#[derive(Debug, Clone, PartialEq)]
641pub enum BoardApiV1 {
642 WhiteboardNodeCreate(String),
644 WhiteboardNodeList(String),
646 WhiteboardUpdateTheme(String),
648 WhiteboardTheme(String),
650 WhiteboardDownloadAsImage(String),
652 WhiteboardNodeCreatePlantuml(String),
654}
655
656impl BoardApiV1 {
657 pub fn to_url(&self) -> String {
659 match self {
660 BoardApiV1::WhiteboardNodeCreate(board_id) => {
661 format!("/open-apis/board/v1/whiteboards/{board_id}/nodes")
662 }
663 BoardApiV1::WhiteboardNodeList(board_id) => {
664 format!("/open-apis/board/v1/whiteboards/{board_id}/nodes")
665 }
666 BoardApiV1::WhiteboardUpdateTheme(board_id) => {
667 format!("/open-apis/board/v1/whiteboards/{board_id}/update_theme")
668 }
669 BoardApiV1::WhiteboardTheme(board_id) => {
670 format!("/open-apis/board/v1/whiteboards/{board_id}/theme")
671 }
672 BoardApiV1::WhiteboardDownloadAsImage(board_id) => {
673 format!("/open-apis/board/v1/whiteboards/{board_id}/download_as_image")
674 }
675 BoardApiV1::WhiteboardNodeCreatePlantuml(board_id) => {
676 format!("/open-apis/board/v1/whiteboards/{board_id}/nodes/plantuml")
677 }
678 }
679 }
680}
681
682#[cfg(test)]
683#[allow(unused_imports)]
684mod tests {
685 use super::*;
686
687 #[test]
688 fn test_task_api_v1_to_url() {
689 let cases = vec![
690 (
691 TaskApiV1::TaskCreate,
692 "/open-apis/task/v1/tasks".to_string(),
693 ),
694 (
695 TaskApiV1::TaskGet("task_1".to_string()),
696 "/open-apis/task/v1/tasks/task_1".to_string(),
697 ),
698 (
699 TaskApiV1::TaskUpdate("task_1".to_string()),
700 "/open-apis/task/v1/tasks/task_1".to_string(),
701 ),
702 (
703 TaskApiV1::TaskDelete("task_1".to_string()),
704 "/open-apis/task/v1/tasks/task_1".to_string(),
705 ),
706 (
707 TaskApiV1::TaskComplete("task_1".to_string()),
708 "/open-apis/task/v1/tasks/task_1/complete".to_string(),
709 ),
710 (
711 TaskApiV1::TaskUncomplete("task_1".to_string()),
712 "/open-apis/task/v1/tasks/task_1/uncomplete".to_string(),
713 ),
714 (TaskApiV1::TaskList, "/open-apis/task/v1/tasks".to_string()),
715 (
716 TaskApiV1::TaskFollowerCreate("task_1".to_string()),
717 "/open-apis/task/v1/tasks/task_1/followers".to_string(),
718 ),
719 (
720 TaskApiV1::TaskFollowerDelete("task_1".to_string(), "f1".to_string()),
721 "/open-apis/task/v1/tasks/task_1/followers/f1".to_string(),
722 ),
723 (
724 TaskApiV1::TaskFollowerList("task_1".to_string()),
725 "/open-apis/task/v1/tasks/task_1/followers".to_string(),
726 ),
727 (
728 TaskApiV1::TaskFollowerBatchDelete("task_1".to_string()),
729 "/open-apis/task/v1/tasks/task_1/batch_delete_follower".to_string(),
730 ),
731 (
732 TaskApiV1::TaskCollaboratorCreate("task_1".to_string()),
733 "/open-apis/task/v1/tasks/task_1/collaborators".to_string(),
734 ),
735 (
736 TaskApiV1::TaskCollaboratorDelete("task_1".to_string(), "c1".to_string()),
737 "/open-apis/task/v1/tasks/task_1/collaborators/c1".to_string(),
738 ),
739 (
740 TaskApiV1::TaskCollaboratorList("task_1".to_string()),
741 "/open-apis/task/v1/tasks/task_1/collaborators".to_string(),
742 ),
743 (
744 TaskApiV1::TaskCollaboratorBatchDelete("task_1".to_string()),
745 "/open-apis/task/v1/tasks/task_1/batch_delete_collaborator".to_string(),
746 ),
747 (
748 TaskApiV1::TaskReminderCreate("task_1".to_string()),
749 "/open-apis/task/v1/tasks/task_1/reminders".to_string(),
750 ),
751 (
752 TaskApiV1::TaskReminderDelete("task_1".to_string(), "r1".to_string()),
753 "/open-apis/task/v1/tasks/task_1/reminders/r1".to_string(),
754 ),
755 (
756 TaskApiV1::TaskReminderList("task_1".to_string()),
757 "/open-apis/task/v1/tasks/task_1/reminders".to_string(),
758 ),
759 (
760 TaskApiV1::TaskCommentCreate("task_1".to_string()),
761 "/open-apis/task/v1/tasks/task_1/comments".to_string(),
762 ),
763 (
764 TaskApiV1::TaskCommentGet("task_1".to_string(), "cm1".to_string()),
765 "/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
766 ),
767 (
768 TaskApiV1::TaskCommentUpdate("task_1".to_string(), "cm1".to_string()),
769 "/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
770 ),
771 (
772 TaskApiV1::TaskCommentDelete("task_1".to_string(), "cm1".to_string()),
773 "/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
774 ),
775 (
776 TaskApiV1::TaskCommentList("task_1".to_string()),
777 "/open-apis/task/v1/tasks/task_1/comments".to_string(),
778 ),
779 ];
780
781 for (api, expected) in cases {
782 assert_eq!(api.to_url(), expected);
783 }
784 }
785
786 #[test]
787 fn test_task_api_v2_to_url() {
788 let cases = vec![
789 (
790 TaskApiV2::TaskCreate,
791 "/open-apis/task/v2/tasks".to_string(),
792 ),
793 (
794 TaskApiV2::TaskGet("t1".to_string()),
795 "/open-apis/task/v2/tasks/t1".to_string(),
796 ),
797 (
798 TaskApiV2::TaskUpdate("t1".to_string()),
799 "/open-apis/task/v2/tasks/t1".to_string(),
800 ),
801 (
802 TaskApiV2::TaskDelete("t1".to_string()),
803 "/open-apis/task/v2/tasks/t1".to_string(),
804 ),
805 (
806 TaskApiV2::TaskComplete("t1".to_string()),
807 "/open-apis/task/v2/tasks/t1/complete".to_string(),
808 ),
809 (
810 TaskApiV2::TaskUncomplete("t1".to_string()),
811 "/open-apis/task/v2/tasks/t1/uncomplete".to_string(),
812 ),
813 (TaskApiV2::TaskList, "/open-apis/task/v2/tasks".to_string()),
814 (
815 TaskApiV2::TasklistCreate,
816 "/open-apis/task/v2/tasklists".to_string(),
817 ),
818 (
819 TaskApiV2::TasklistGet("tl1".to_string()),
820 "/open-apis/task/v2/tasklists/tl1".to_string(),
821 ),
822 (
823 TaskApiV2::TasklistUpdate("tl1".to_string()),
824 "/open-apis/task/v2/tasklists/tl1".to_string(),
825 ),
826 (
827 TaskApiV2::TasklistDelete("tl1".to_string()),
828 "/open-apis/task/v2/tasklists/tl1".to_string(),
829 ),
830 (
831 TaskApiV2::TasklistList,
832 "/open-apis/task/v2/tasklists".to_string(),
833 ),
834 (
835 TaskApiV2::SectionCreate,
836 "/open-apis/task/v2/sections".to_string(),
837 ),
838 (
839 TaskApiV2::SectionGet("s1".to_string()),
840 "/open-apis/task/v2/sections/s1".to_string(),
841 ),
842 (
843 TaskApiV2::SectionUpdate("s1".to_string()),
844 "/open-apis/task/v2/sections/s1".to_string(),
845 ),
846 (
847 TaskApiV2::SectionDelete("s1".to_string()),
848 "/open-apis/task/v2/sections/s1".to_string(),
849 ),
850 (
851 TaskApiV2::SectionList,
852 "/open-apis/task/v2/sections".to_string(),
853 ),
854 (
855 TaskApiV2::CustomFieldCreate,
856 "/open-apis/task/v2/custom_fields".to_string(),
857 ),
858 (
859 TaskApiV2::CustomFieldGet("f1".to_string()),
860 "/open-apis/task/v2/custom_fields/f1".to_string(),
861 ),
862 (
863 TaskApiV2::CustomFieldUpdate("f1".to_string()),
864 "/open-apis/task/v2/custom_fields/f1".to_string(),
865 ),
866 (
867 TaskApiV2::CustomFieldDelete("f1".to_string()),
868 "/open-apis/task/v2/custom_fields/f1".to_string(),
869 ),
870 (
871 TaskApiV2::CustomFieldList,
872 "/open-apis/task/v2/custom_fields".to_string(),
873 ),
874 (
875 TaskApiV2::CommentCreate,
876 "/open-apis/task/v2/comments".to_string(),
877 ),
878 (
879 TaskApiV2::CommentGet("c1".to_string()),
880 "/open-apis/task/v2/comments/c1".to_string(),
881 ),
882 (
883 TaskApiV2::CommentUpdate("c1".to_string()),
884 "/open-apis/task/v2/comments/c1".to_string(),
885 ),
886 (
887 TaskApiV2::CommentDelete("c1".to_string()),
888 "/open-apis/task/v2/comments/c1".to_string(),
889 ),
890 (
891 TaskApiV2::CommentList,
892 "/open-apis/task/v2/comments".to_string(),
893 ),
894 (
895 TaskApiV2::AttachmentUpload,
896 "/open-apis/task/v2/attachments/upload".to_string(),
897 ),
898 (
899 TaskApiV2::AttachmentDelete("a1".to_string()),
900 "/open-apis/task/v2/attachments/a1".to_string(),
901 ),
902 (
903 TaskApiV2::SubtaskCreate("t1".to_string()),
904 "/open-apis/task/v2/tasks/t1/subtasks".to_string(),
905 ),
906 (
907 TaskApiV2::SubtaskList("t1".to_string()),
908 "/open-apis/task/v2/tasks/t1/subtasks".to_string(),
909 ),
910 (
911 TaskApiV2::TaskAddTasklist("t1".to_string()),
912 "/open-apis/task/v2/tasks/t1/add_tasklist".to_string(),
913 ),
914 (
915 TaskApiV2::TaskRemoveTasklist("t1".to_string()),
916 "/open-apis/task/v2/tasks/t1/remove_tasklist".to_string(),
917 ),
918 (
919 TaskApiV2::TaskGetTasklists("t1".to_string()),
920 "/open-apis/task/v2/tasks/t1/tasklists".to_string(),
921 ),
922 (
923 TaskApiV2::TaskAddMembers("t1".to_string()),
924 "/open-apis/task/v2/tasks/t1/add_members".to_string(),
925 ),
926 (
927 TaskApiV2::TaskRemoveMembers("t1".to_string()),
928 "/open-apis/task/v2/tasks/t1/remove_members".to_string(),
929 ),
930 (
931 TaskApiV2::TaskAddReminders("t1".to_string()),
932 "/open-apis/task/v2/tasks/t1/add_reminders".to_string(),
933 ),
934 (
935 TaskApiV2::TaskRemoveReminders("t1".to_string()),
936 "/open-apis/task/v2/tasks/t1/remove_reminders".to_string(),
937 ),
938 (
939 TaskApiV2::TaskAddDependencies("t1".to_string()),
940 "/open-apis/task/v2/tasks/t1/add_dependencies".to_string(),
941 ),
942 (
943 TaskApiV2::TaskRemoveDependencies("t1".to_string()),
944 "/open-apis/task/v2/tasks/t1/remove_dependencies".to_string(),
945 ),
946 (
947 TaskApiV2::TasklistGetTasks("tl1".to_string()),
948 "/open-apis/task/v2/tasklists/tl1/tasks".to_string(),
949 ),
950 (
951 TaskApiV2::TasklistAddMembers("tl1".to_string()),
952 "/open-apis/task/v2/tasklists/tl1/add_members".to_string(),
953 ),
954 (
955 TaskApiV2::TasklistRemoveMembers("tl1".to_string()),
956 "/open-apis/task/v2/tasklists/tl1/remove_members".to_string(),
957 ),
958 (
959 TaskApiV2::SectionGetTasks("s1".to_string()),
960 "/open-apis/task/v2/sections/s1/tasks".to_string(),
961 ),
962 (
963 TaskApiV2::ActivitySubscriptionCreate("tl1".to_string()),
964 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions".to_string(),
965 ),
966 (
967 TaskApiV2::ActivitySubscriptionGet("tl1".to_string(), "as1".to_string()),
968 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
969 ),
970 (
971 TaskApiV2::ActivitySubscriptionUpdate("tl1".to_string(), "as1".to_string()),
972 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
973 ),
974 (
975 TaskApiV2::ActivitySubscriptionDelete("tl1".to_string(), "as1".to_string()),
976 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
977 ),
978 (
979 TaskApiV2::ActivitySubscriptionList("tl1".to_string()),
980 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions".to_string(),
981 ),
982 (
983 TaskApiV2::CustomFieldOptionCreate("cf1".to_string()),
984 "/open-apis/task/v2/custom_fields/cf1/options".to_string(),
985 ),
986 (
987 TaskApiV2::CustomFieldOptionUpdate("cf1".to_string(), "op1".to_string()),
988 "/open-apis/task/v2/custom_fields/cf1/options/op1".to_string(),
989 ),
990 (
991 TaskApiV2::AttachmentGet("a1".to_string()),
992 "/open-apis/task/v2/attachments/a1".to_string(),
993 ),
994 (
995 TaskApiV2::AttachmentList,
996 "/open-apis/task/v2/attachments".to_string(),
997 ),
998 (
999 TaskApiV2::CustomFieldAdd("cf1".to_string()),
1000 "/open-apis/task/v2/custom_fields/cf1/add".to_string(),
1001 ),
1002 (
1003 TaskApiV2::CustomFieldRemove("cf1".to_string()),
1004 "/open-apis/task/v2/custom_fields/cf1/remove".to_string(),
1005 ),
1006 ];
1007
1008 for (api, expected) in cases {
1009 assert_eq!(api.to_url(), expected);
1010 }
1011 }
1012
1013 #[test]
1014 fn test_approval_api_v4_to_url() {
1015 let cases = vec![
1016 (
1017 ApprovalApiV4::ApprovalCreate,
1018 "/open-apis/approval/v4/approvals".to_string(),
1019 ),
1020 (
1021 ApprovalApiV4::ApprovalGet("code1".to_string()),
1022 "/open-apis/approval/v4/approvals/code1".to_string(),
1023 ),
1024 (
1025 ApprovalApiV4::ApprovalSubscribe("code1".to_string()),
1026 "/open-apis/approval/v4/approvals/code1/subscribe".to_string(),
1027 ),
1028 (
1029 ApprovalApiV4::ApprovalUnsubscribe("code1".to_string()),
1030 "/open-apis/approval/v4/approvals/code1/unsubscribe".to_string(),
1031 ),
1032 (
1033 ApprovalApiV4::ExternalApprovalCreate,
1034 "/open-apis/approval/v4/external_approvals".to_string(),
1035 ),
1036 (
1037 ApprovalApiV4::ExternalApprovalGet("code1".to_string()),
1038 "/open-apis/approval/v4/external_approvals/code1".to_string(),
1039 ),
1040 (
1041 ApprovalApiV4::ExternalInstanceCheck,
1042 "/open-apis/approval/v4/external_instances/check".to_string(),
1043 ),
1044 (
1045 ApprovalApiV4::ExternalInstanceCreate,
1046 "/open-apis/approval/v4/external_instances".to_string(),
1047 ),
1048 (
1049 ApprovalApiV4::ExternalTaskList,
1050 "/open-apis/approval/v4/external_tasks".to_string(),
1051 ),
1052 (
1053 ApprovalApiV4::InstanceAddSign,
1054 "/open-apis/approval/v4/instances/add_sign".to_string(),
1055 ),
1056 (
1057 ApprovalApiV4::InstanceCancel,
1058 "/open-apis/approval/v4/instances/cancel".to_string(),
1059 ),
1060 (
1061 ApprovalApiV4::InstanceCc,
1062 "/open-apis/approval/v4/instances/cc".to_string(),
1063 ),
1064 (
1065 ApprovalApiV4::InstanceCreate,
1066 "/open-apis/approval/v4/instances".to_string(),
1067 ),
1068 (
1069 ApprovalApiV4::InstanceGet("ins1".to_string()),
1070 "/open-apis/approval/v4/instances/ins1".to_string(),
1071 ),
1072 (
1073 ApprovalApiV4::InstanceList("code1".to_string()),
1074 "/open-apis/approval/v4/instances?approval_code=code1".to_string(),
1075 ),
1076 (
1077 ApprovalApiV4::InstancePreview,
1078 "/open-apis/approval/v4/instances/preview".to_string(),
1079 ),
1080 (
1081 ApprovalApiV4::InstanceQuery,
1082 "/open-apis/approval/v4/instances/query".to_string(),
1083 ),
1084 (
1085 ApprovalApiV4::InstanceSearchCc,
1086 "/open-apis/approval/v4/instances/search_cc".to_string(),
1087 ),
1088 (
1089 ApprovalApiV4::InstanceSpecifiedRollback("ins1".to_string()),
1090 "/open-apis/approval/v4/instances/specified_rollback".to_string(),
1091 ),
1092 (
1093 ApprovalApiV4::InstanceCommentCreate("ins1".to_string()),
1094 "/open-apis/approval/v4/instances/ins1/comments".to_string(),
1095 ),
1096 (
1097 ApprovalApiV4::InstanceCommentDelete("ins1".to_string(), "c1".to_string()),
1098 "/open-apis/approval/v4/instances/ins1/comments/c1".to_string(),
1099 ),
1100 (
1101 ApprovalApiV4::InstanceCommentList("ins1".to_string()),
1102 "/open-apis/approval/v4/instances/ins1/comments".to_string(),
1103 ),
1104 (
1105 ApprovalApiV4::TaskApprove,
1106 "/open-apis/approval/v4/tasks/approve".to_string(),
1107 ),
1108 (
1109 ApprovalApiV4::TaskQuery,
1110 "/open-apis/approval/v4/tasks/query".to_string(),
1111 ),
1112 (
1113 ApprovalApiV4::TaskReject,
1114 "/open-apis/approval/v4/tasks/reject".to_string(),
1115 ),
1116 (
1117 ApprovalApiV4::TaskResubmit,
1118 "/open-apis/approval/v4/tasks/resubmit".to_string(),
1119 ),
1120 (
1121 ApprovalApiV4::TaskSearch,
1122 "/open-apis/approval/v4/tasks/search".to_string(),
1123 ),
1124 (
1125 ApprovalApiV4::TaskTransfer,
1126 "/open-apis/approval/v4/tasks/transfer".to_string(),
1127 ),
1128 ];
1129
1130 for (api, expected) in cases {
1131 assert_eq!(api.to_url(), expected);
1132 }
1133 }
1134
1135 #[test]
1136 fn test_board_api_v1_to_url() {
1137 let cases = vec![
1138 (
1139 BoardApiV1::WhiteboardNodeCreate("b1".to_string()),
1140 "/open-apis/board/v1/whiteboards/b1/nodes".to_string(),
1141 ),
1142 (
1143 BoardApiV1::WhiteboardNodeList("b1".to_string()),
1144 "/open-apis/board/v1/whiteboards/b1/nodes".to_string(),
1145 ),
1146 (
1147 BoardApiV1::WhiteboardUpdateTheme("b1".to_string()),
1148 "/open-apis/board/v1/whiteboards/b1/update_theme".to_string(),
1149 ),
1150 (
1151 BoardApiV1::WhiteboardTheme("b1".to_string()),
1152 "/open-apis/board/v1/whiteboards/b1/theme".to_string(),
1153 ),
1154 (
1155 BoardApiV1::WhiteboardDownloadAsImage("b1".to_string()),
1156 "/open-apis/board/v1/whiteboards/b1/download_as_image".to_string(),
1157 ),
1158 (
1159 BoardApiV1::WhiteboardNodeCreatePlantuml("b1".to_string()),
1160 "/open-apis/board/v1/whiteboards/b1/nodes/plantuml".to_string(),
1161 ),
1162 ];
1163
1164 for (api, expected) in cases {
1165 assert_eq!(api.to_url(), expected);
1166 }
1167 }
1168
1169 #[test]
1170 fn issue_194_workflow_new_endpoint_paths() {
1171 assert_eq!(
1172 crate::common::BoardV1Endpoint::WhiteboardNodeBatchDelete("board_123".to_string())
1173 .to_url(),
1174 "/open-apis/board/v1/whiteboards/board_123/nodes/batch_delete"
1175 );
1176 assert_eq!(
1177 crate::common::TaskV2Endpoint::TaskSetAncestorTask("task_123".to_string()).to_url(),
1178 "/open-apis/task/v2/tasks/task_123/set_ancestor_task"
1179 );
1180 assert_eq!(
1181 crate::common::TaskV2Endpoint::ListRelatedTask.to_url(),
1182 "/open-apis/task/v2/task_v2/list_related_task"
1183 );
1184 assert_eq!(
1185 crate::common::TaskV2Endpoint::TaskSubscription.to_url(),
1186 "/open-apis/task/v2/task_v2/task_subscription"
1187 );
1188 }
1189}