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(String),
152 SectionGet(String, String),
154 SectionUpdate(String, String),
156 SectionDelete(String, String),
158 SectionList(String),
160 CustomFieldCreate(String),
162 CustomFieldGet(String, String),
164 CustomFieldUpdate(String, String),
166 CustomFieldDelete(String, String),
168 CustomFieldList(String),
170 CommentCreate(String),
172 CommentGet(String, String),
174 CommentUpdate(String, String),
176 CommentDelete(String, String),
178 CommentList(String),
180 AttachmentUpload(String),
182 AttachmentDelete(String, 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
254impl TaskApiV2 {
255 pub fn to_url(&self) -> String {
257 match self {
258 TaskApiV2::TaskCreate => "/open-apis/task/v2/tasks".to_string(),
260 TaskApiV2::TaskGet(task_guid) => {
261 format!("/open-apis/task/v2/tasks/{task_guid}")
262 }
263 TaskApiV2::TaskUpdate(task_guid) => {
264 format!("/open-apis/task/v2/tasks/{task_guid}")
265 }
266 TaskApiV2::TaskDelete(task_guid) => {
267 format!("/open-apis/task/v2/tasks/{task_guid}")
268 }
269 TaskApiV2::TaskComplete(task_guid) => {
270 format!("/open-apis/task/v2/tasks/{task_guid}/complete")
271 }
272 TaskApiV2::TaskUncomplete(task_guid) => {
273 format!("/open-apis/task/v2/tasks/{task_guid}/uncomplete")
274 }
275 TaskApiV2::TaskList => "/open-apis/task/v2/tasks".to_string(),
276
277 TaskApiV2::TasklistCreate => "/open-apis/task/v2/tasklists".to_string(),
279 TaskApiV2::TasklistGet(tasklist_guid) => {
280 format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
281 }
282 TaskApiV2::TasklistUpdate(tasklist_guid) => {
283 format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
284 }
285 TaskApiV2::TasklistDelete(tasklist_guid) => {
286 format!("/open-apis/task/v2/tasklists/{tasklist_guid}")
287 }
288 TaskApiV2::TasklistList => "/open-apis/task/v2/tasklists".to_string(),
289
290 TaskApiV2::SectionCreate(tasklist_guid) => {
292 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections")
293 }
294 TaskApiV2::SectionGet(tasklist_guid, section_guid) => {
295 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections/{section_guid}")
296 }
297 TaskApiV2::SectionUpdate(tasklist_guid, section_guid) => {
298 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections/{section_guid}")
299 }
300 TaskApiV2::SectionDelete(tasklist_guid, section_guid) => {
301 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections/{section_guid}")
302 }
303 TaskApiV2::SectionList(tasklist_guid) => {
304 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/sections")
305 }
306
307 TaskApiV2::CustomFieldCreate(tasklist_guid) => {
309 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields")
310 }
311 TaskApiV2::CustomFieldGet(tasklist_guid, field_guid) => {
312 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields/{field_guid}")
313 }
314 TaskApiV2::CustomFieldUpdate(tasklist_guid, field_guid) => {
315 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields/{field_guid}")
316 }
317 TaskApiV2::CustomFieldDelete(tasklist_guid, field_guid) => {
318 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields/{field_guid}")
319 }
320 TaskApiV2::CustomFieldList(tasklist_guid) => {
321 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/custom_fields")
322 }
323
324 TaskApiV2::CommentCreate(task_guid) => {
326 format!("/open-apis/task/v2/tasks/{task_guid}/comments")
327 }
328 TaskApiV2::CommentGet(task_guid, comment_guid) => {
329 format!("/open-apis/task/v2/tasks/{task_guid}/comments/{comment_guid}")
330 }
331 TaskApiV2::CommentUpdate(task_guid, comment_guid) => {
332 format!("/open-apis/task/v2/tasks/{task_guid}/comments/{comment_guid}")
333 }
334 TaskApiV2::CommentDelete(task_guid, comment_guid) => {
335 format!("/open-apis/task/v2/tasks/{task_guid}/comments/{comment_guid}")
336 }
337 TaskApiV2::CommentList(task_guid) => {
338 format!("/open-apis/task/v2/tasks/{task_guid}/comments")
339 }
340
341 TaskApiV2::AttachmentUpload(task_guid) => {
343 format!("/open-apis/task/v2/tasks/{task_guid}/attachments")
344 }
345 TaskApiV2::AttachmentDelete(task_guid, attachment_guid) => {
346 format!("/open-apis/task/v2/tasks/{task_guid}/attachments/{attachment_guid}")
347 }
348
349 TaskApiV2::SubtaskCreate(task_guid) => {
351 format!("/open-apis/task/v2/tasks/{task_guid}/subtasks")
352 }
353 TaskApiV2::SubtaskList(task_guid) => {
354 format!("/open-apis/task/v2/tasks/{task_guid}/subtasks")
355 }
356
357 TaskApiV2::TaskAddTasklist(task_guid) => {
359 format!("/open-apis/task/v2/tasks/{task_guid}/add_tasklist")
360 }
361 TaskApiV2::TaskRemoveTasklist(task_guid) => {
362 format!("/open-apis/task/v2/tasks/{task_guid}/remove_tasklist")
363 }
364 TaskApiV2::TaskGetTasklists(task_guid) => {
365 format!("/open-apis/task/v2/tasks/{task_guid}/tasklists")
366 }
367 TaskApiV2::TaskAddMembers(task_guid) => {
368 format!("/open-apis/task/v2/tasks/{task_guid}/add_members")
369 }
370 TaskApiV2::TaskRemoveMembers(task_guid) => {
371 format!("/open-apis/task/v2/tasks/{task_guid}/remove_members")
372 }
373 TaskApiV2::TaskAddReminders(task_guid) => {
374 format!("/open-apis/task/v2/tasks/{task_guid}/add_reminders")
375 }
376 TaskApiV2::TaskRemoveReminders(task_guid) => {
377 format!("/open-apis/task/v2/tasks/{task_guid}/remove_reminders")
378 }
379 TaskApiV2::TaskAddDependencies(task_guid) => {
380 format!("/open-apis/task/v2/tasks/{task_guid}/add_dependencies")
381 }
382 TaskApiV2::TaskRemoveDependencies(task_guid) => {
383 format!("/open-apis/task/v2/tasks/{task_guid}/remove_dependencies")
384 }
385
386 TaskApiV2::TasklistGetTasks(tasklist_guid) => {
388 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/tasks")
389 }
390 TaskApiV2::TasklistAddMembers(tasklist_guid) => {
391 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/add_members")
392 }
393 TaskApiV2::TasklistRemoveMembers(tasklist_guid) => {
394 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/remove_members")
395 }
396
397 TaskApiV2::SectionGetTasks(section_guid) => {
399 format!("/open-apis/task/v2/sections/{section_guid}/tasks")
400 }
401
402 TaskApiV2::ActivitySubscriptionCreate(tasklist_guid) => {
404 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions")
405 }
406 TaskApiV2::ActivitySubscriptionGet(tasklist_guid, subscription_guid) => {
407 format!(
408 "/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
409 )
410 }
411 TaskApiV2::ActivitySubscriptionUpdate(tasklist_guid, subscription_guid) => {
412 format!(
413 "/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
414 )
415 }
416 TaskApiV2::ActivitySubscriptionDelete(tasklist_guid, subscription_guid) => {
417 format!(
418 "/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions/{subscription_guid}"
419 )
420 }
421 TaskApiV2::ActivitySubscriptionList(tasklist_guid) => {
422 format!("/open-apis/task/v2/tasklists/{tasklist_guid}/activity_subscriptions")
423 }
424
425 TaskApiV2::CustomFieldOptionCreate(custom_field_guid) => {
427 format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/options")
428 }
429 TaskApiV2::CustomFieldOptionUpdate(custom_field_guid, option_guid) => {
430 format!(
431 "/open-apis/task/v2/custom_fields/{custom_field_guid}/options/{option_guid}"
432 )
433 }
434
435 TaskApiV2::AttachmentGet(attachment_guid) => {
437 format!("/open-apis/task/v2/attachments/{attachment_guid}")
438 }
439 TaskApiV2::AttachmentList => "/open-apis/task/v2/attachments".to_string(),
440
441 TaskApiV2::CustomFieldAdd(custom_field_guid) => {
443 format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/add")
444 }
445 TaskApiV2::CustomFieldRemove(custom_field_guid) => {
446 format!("/open-apis/task/v2/custom_fields/{custom_field_guid}/remove")
447 }
448 }
449 }
450}
451
452#[derive(Debug, Clone, PartialEq)]
454pub enum ApprovalApiV4 {
455 ApprovalCreate,
457 ApprovalGet(String),
459 ApprovalSubscribe(String),
461 ApprovalUnsubscribe(String),
463 ExternalApprovalCreate,
465 ExternalApprovalGet(String),
467 ExternalInstanceCheck,
469 ExternalInstanceCreate,
471 ExternalTaskList,
473 InstanceAddSign,
475 InstanceCancel,
477 InstanceCc,
479 InstanceCreate,
481 InstanceGet(String),
483 InstanceList(String),
485 InstancePreview,
487 InstanceQuery,
489 InstanceSearchCc,
491 InstanceSpecifiedRollback(String),
493 InstanceCommentCreate(String),
495 InstanceCommentDelete(String, String),
497 InstanceCommentList(String),
499 TaskApprove,
501 TaskQuery,
503 TaskReject,
505 TaskResubmit,
507 TaskSearch,
509 TaskTransfer,
511}
512
513impl ApprovalApiV4 {
514 pub fn to_url(&self) -> String {
516 match self {
517 ApprovalApiV4::ApprovalCreate => "/open-apis/approval/v4/approvals".to_string(),
519 ApprovalApiV4::ApprovalGet(approval_code) => {
520 format!("/open-apis/approval/v4/approvals/{approval_code}")
521 }
522 ApprovalApiV4::ApprovalSubscribe(approval_code) => {
523 format!("/open-apis/approval/v4/approvals/{approval_code}/subscribe")
524 }
525 ApprovalApiV4::ApprovalUnsubscribe(approval_code) => {
526 format!("/open-apis/approval/v4/approvals/{approval_code}/unsubscribe")
527 }
528
529 ApprovalApiV4::ExternalApprovalCreate => {
531 "/open-apis/approval/v4/external_approvals".to_string()
532 }
533 ApprovalApiV4::ExternalApprovalGet(approval_code) => {
534 format!("/open-apis/approval/v4/external_approvals/{approval_code}")
535 }
536
537 ApprovalApiV4::ExternalInstanceCheck => {
539 "/open-apis/approval/v4/external_instances/check".to_string()
540 }
541 ApprovalApiV4::ExternalInstanceCreate => {
542 "/open-apis/approval/v4/external_instances".to_string()
543 }
544
545 ApprovalApiV4::ExternalTaskList => "/open-apis/approval/v4/external_tasks".to_string(),
547
548 ApprovalApiV4::InstanceAddSign => {
550 "/open-apis/approval/v4/instances/add_sign".to_string()
551 }
552 ApprovalApiV4::InstanceCancel => "/open-apis/approval/v4/instances/cancel".to_string(),
553 ApprovalApiV4::InstanceCc => "/open-apis/approval/v4/instances/cc".to_string(),
554 ApprovalApiV4::InstanceCreate => "/open-apis/approval/v4/instances".to_string(),
555 ApprovalApiV4::InstanceGet(instance_id) => {
556 format!("/open-apis/approval/v4/instances/{instance_id}")
557 }
558 ApprovalApiV4::InstanceList(approval_code) => {
559 format!("/open-apis/approval/v4/instances?approval_code={approval_code}")
560 }
561 ApprovalApiV4::InstancePreview => {
562 "/open-apis/approval/v4/instances/preview".to_string()
563 }
564 ApprovalApiV4::InstanceQuery => "/open-apis/approval/v4/instances/query".to_string(),
565 ApprovalApiV4::InstanceSearchCc => {
566 "/open-apis/approval/v4/instances/search_cc".to_string()
567 }
568 ApprovalApiV4::InstanceSpecifiedRollback(_) => {
569 "/open-apis/approval/v4/instances/specified_rollback".to_string()
570 }
571
572 ApprovalApiV4::InstanceCommentCreate(instance_id) => {
574 format!("/open-apis/approval/v4/instances/{instance_id}/comments")
575 }
576 ApprovalApiV4::InstanceCommentDelete(instance_id, comment_id) => {
577 format!("/open-apis/approval/v4/instances/{instance_id}/comments/{comment_id}")
578 }
579 ApprovalApiV4::InstanceCommentList(instance_id) => {
580 format!("/open-apis/approval/v4/instances/{instance_id}/comments")
581 }
582
583 ApprovalApiV4::TaskApprove => "/open-apis/approval/v4/tasks/approve".to_string(),
585 ApprovalApiV4::TaskQuery => "/open-apis/approval/v4/tasks/query".to_string(),
586 ApprovalApiV4::TaskReject => "/open-apis/approval/v4/tasks/reject".to_string(),
587 ApprovalApiV4::TaskResubmit => "/open-apis/approval/v4/tasks/resubmit".to_string(),
588 ApprovalApiV4::TaskSearch => "/open-apis/approval/v4/tasks/search".to_string(),
589 ApprovalApiV4::TaskTransfer => "/open-apis/approval/v4/tasks/transfer".to_string(),
590 }
591 }
592}
593
594#[derive(Debug, Clone, PartialEq)]
596pub enum BoardApiV1 {
597 WhiteboardNodeCreate(String),
599 WhiteboardNodeList(String),
601 WhiteboardUpdateTheme(String),
603 WhiteboardTheme(String),
605 WhiteboardDownloadAsImage(String),
607 WhiteboardNodeCreatePlantuml(String),
609}
610
611impl BoardApiV1 {
612 pub fn to_url(&self) -> String {
614 match self {
615 BoardApiV1::WhiteboardNodeCreate(board_id) => {
616 format!("/open-apis/board/v1/whiteboards/{board_id}/nodes")
617 }
618 BoardApiV1::WhiteboardNodeList(board_id) => {
619 format!("/open-apis/board/v1/whiteboards/{board_id}/nodes")
620 }
621 BoardApiV1::WhiteboardUpdateTheme(board_id) => {
622 format!("/open-apis/board/v1/whiteboards/{board_id}/update_theme")
623 }
624 BoardApiV1::WhiteboardTheme(board_id) => {
625 format!("/open-apis/board/v1/whiteboards/{board_id}/theme")
626 }
627 BoardApiV1::WhiteboardDownloadAsImage(board_id) => {
628 format!("/open-apis/board/v1/whiteboards/{board_id}/download_as_image")
629 }
630 BoardApiV1::WhiteboardNodeCreatePlantuml(board_id) => {
631 format!("/open-apis/board/v1/whiteboards/{board_id}/nodes/plantuml")
632 }
633 }
634 }
635}
636
637#[cfg(test)]
638#[allow(unused_imports)]
639mod tests {
640 use super::*;
641
642 #[test]
643 fn test_task_api_v1_to_url() {
644 let cases = vec![
645 (
646 TaskApiV1::TaskCreate,
647 "/open-apis/task/v1/tasks".to_string(),
648 ),
649 (
650 TaskApiV1::TaskGet("task_1".to_string()),
651 "/open-apis/task/v1/tasks/task_1".to_string(),
652 ),
653 (
654 TaskApiV1::TaskUpdate("task_1".to_string()),
655 "/open-apis/task/v1/tasks/task_1".to_string(),
656 ),
657 (
658 TaskApiV1::TaskDelete("task_1".to_string()),
659 "/open-apis/task/v1/tasks/task_1".to_string(),
660 ),
661 (
662 TaskApiV1::TaskComplete("task_1".to_string()),
663 "/open-apis/task/v1/tasks/task_1/complete".to_string(),
664 ),
665 (
666 TaskApiV1::TaskUncomplete("task_1".to_string()),
667 "/open-apis/task/v1/tasks/task_1/uncomplete".to_string(),
668 ),
669 (TaskApiV1::TaskList, "/open-apis/task/v1/tasks".to_string()),
670 (
671 TaskApiV1::TaskFollowerCreate("task_1".to_string()),
672 "/open-apis/task/v1/tasks/task_1/followers".to_string(),
673 ),
674 (
675 TaskApiV1::TaskFollowerDelete("task_1".to_string(), "f1".to_string()),
676 "/open-apis/task/v1/tasks/task_1/followers/f1".to_string(),
677 ),
678 (
679 TaskApiV1::TaskFollowerList("task_1".to_string()),
680 "/open-apis/task/v1/tasks/task_1/followers".to_string(),
681 ),
682 (
683 TaskApiV1::TaskFollowerBatchDelete("task_1".to_string()),
684 "/open-apis/task/v1/tasks/task_1/batch_delete_follower".to_string(),
685 ),
686 (
687 TaskApiV1::TaskCollaboratorCreate("task_1".to_string()),
688 "/open-apis/task/v1/tasks/task_1/collaborators".to_string(),
689 ),
690 (
691 TaskApiV1::TaskCollaboratorDelete("task_1".to_string(), "c1".to_string()),
692 "/open-apis/task/v1/tasks/task_1/collaborators/c1".to_string(),
693 ),
694 (
695 TaskApiV1::TaskCollaboratorList("task_1".to_string()),
696 "/open-apis/task/v1/tasks/task_1/collaborators".to_string(),
697 ),
698 (
699 TaskApiV1::TaskCollaboratorBatchDelete("task_1".to_string()),
700 "/open-apis/task/v1/tasks/task_1/batch_delete_collaborator".to_string(),
701 ),
702 (
703 TaskApiV1::TaskReminderCreate("task_1".to_string()),
704 "/open-apis/task/v1/tasks/task_1/reminders".to_string(),
705 ),
706 (
707 TaskApiV1::TaskReminderDelete("task_1".to_string(), "r1".to_string()),
708 "/open-apis/task/v1/tasks/task_1/reminders/r1".to_string(),
709 ),
710 (
711 TaskApiV1::TaskReminderList("task_1".to_string()),
712 "/open-apis/task/v1/tasks/task_1/reminders".to_string(),
713 ),
714 (
715 TaskApiV1::TaskCommentCreate("task_1".to_string()),
716 "/open-apis/task/v1/tasks/task_1/comments".to_string(),
717 ),
718 (
719 TaskApiV1::TaskCommentGet("task_1".to_string(), "cm1".to_string()),
720 "/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
721 ),
722 (
723 TaskApiV1::TaskCommentUpdate("task_1".to_string(), "cm1".to_string()),
724 "/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
725 ),
726 (
727 TaskApiV1::TaskCommentDelete("task_1".to_string(), "cm1".to_string()),
728 "/open-apis/task/v1/tasks/task_1/comments/cm1".to_string(),
729 ),
730 (
731 TaskApiV1::TaskCommentList("task_1".to_string()),
732 "/open-apis/task/v1/tasks/task_1/comments".to_string(),
733 ),
734 ];
735
736 for (api, expected) in cases {
737 assert_eq!(api.to_url(), expected);
738 }
739 }
740
741 #[test]
742 fn test_task_api_v2_to_url() {
743 let cases = vec![
744 (
745 TaskApiV2::TaskCreate,
746 "/open-apis/task/v2/tasks".to_string(),
747 ),
748 (
749 TaskApiV2::TaskGet("t1".to_string()),
750 "/open-apis/task/v2/tasks/t1".to_string(),
751 ),
752 (
753 TaskApiV2::TaskUpdate("t1".to_string()),
754 "/open-apis/task/v2/tasks/t1".to_string(),
755 ),
756 (
757 TaskApiV2::TaskDelete("t1".to_string()),
758 "/open-apis/task/v2/tasks/t1".to_string(),
759 ),
760 (
761 TaskApiV2::TaskComplete("t1".to_string()),
762 "/open-apis/task/v2/tasks/t1/complete".to_string(),
763 ),
764 (
765 TaskApiV2::TaskUncomplete("t1".to_string()),
766 "/open-apis/task/v2/tasks/t1/uncomplete".to_string(),
767 ),
768 (TaskApiV2::TaskList, "/open-apis/task/v2/tasks".to_string()),
769 (
770 TaskApiV2::TasklistCreate,
771 "/open-apis/task/v2/tasklists".to_string(),
772 ),
773 (
774 TaskApiV2::TasklistGet("tl1".to_string()),
775 "/open-apis/task/v2/tasklists/tl1".to_string(),
776 ),
777 (
778 TaskApiV2::TasklistUpdate("tl1".to_string()),
779 "/open-apis/task/v2/tasklists/tl1".to_string(),
780 ),
781 (
782 TaskApiV2::TasklistDelete("tl1".to_string()),
783 "/open-apis/task/v2/tasklists/tl1".to_string(),
784 ),
785 (
786 TaskApiV2::TasklistList,
787 "/open-apis/task/v2/tasklists".to_string(),
788 ),
789 (
790 TaskApiV2::SectionCreate("tl1".to_string()),
791 "/open-apis/task/v2/tasklists/tl1/sections".to_string(),
792 ),
793 (
794 TaskApiV2::SectionGet("tl1".to_string(), "s1".to_string()),
795 "/open-apis/task/v2/tasklists/tl1/sections/s1".to_string(),
796 ),
797 (
798 TaskApiV2::SectionUpdate("tl1".to_string(), "s1".to_string()),
799 "/open-apis/task/v2/tasklists/tl1/sections/s1".to_string(),
800 ),
801 (
802 TaskApiV2::SectionDelete("tl1".to_string(), "s1".to_string()),
803 "/open-apis/task/v2/tasklists/tl1/sections/s1".to_string(),
804 ),
805 (
806 TaskApiV2::SectionList("tl1".to_string()),
807 "/open-apis/task/v2/tasklists/tl1/sections".to_string(),
808 ),
809 (
810 TaskApiV2::CustomFieldCreate("tl1".to_string()),
811 "/open-apis/task/v2/tasklists/tl1/custom_fields".to_string(),
812 ),
813 (
814 TaskApiV2::CustomFieldGet("tl1".to_string(), "f1".to_string()),
815 "/open-apis/task/v2/tasklists/tl1/custom_fields/f1".to_string(),
816 ),
817 (
818 TaskApiV2::CustomFieldUpdate("tl1".to_string(), "f1".to_string()),
819 "/open-apis/task/v2/tasklists/tl1/custom_fields/f1".to_string(),
820 ),
821 (
822 TaskApiV2::CustomFieldDelete("tl1".to_string(), "f1".to_string()),
823 "/open-apis/task/v2/tasklists/tl1/custom_fields/f1".to_string(),
824 ),
825 (
826 TaskApiV2::CustomFieldList("tl1".to_string()),
827 "/open-apis/task/v2/tasklists/tl1/custom_fields".to_string(),
828 ),
829 (
830 TaskApiV2::CommentCreate("t1".to_string()),
831 "/open-apis/task/v2/tasks/t1/comments".to_string(),
832 ),
833 (
834 TaskApiV2::CommentGet("t1".to_string(), "c1".to_string()),
835 "/open-apis/task/v2/tasks/t1/comments/c1".to_string(),
836 ),
837 (
838 TaskApiV2::CommentUpdate("t1".to_string(), "c1".to_string()),
839 "/open-apis/task/v2/tasks/t1/comments/c1".to_string(),
840 ),
841 (
842 TaskApiV2::CommentDelete("t1".to_string(), "c1".to_string()),
843 "/open-apis/task/v2/tasks/t1/comments/c1".to_string(),
844 ),
845 (
846 TaskApiV2::CommentList("t1".to_string()),
847 "/open-apis/task/v2/tasks/t1/comments".to_string(),
848 ),
849 (
850 TaskApiV2::AttachmentUpload("t1".to_string()),
851 "/open-apis/task/v2/tasks/t1/attachments".to_string(),
852 ),
853 (
854 TaskApiV2::AttachmentDelete("t1".to_string(), "a1".to_string()),
855 "/open-apis/task/v2/tasks/t1/attachments/a1".to_string(),
856 ),
857 (
858 TaskApiV2::SubtaskCreate("t1".to_string()),
859 "/open-apis/task/v2/tasks/t1/subtasks".to_string(),
860 ),
861 (
862 TaskApiV2::SubtaskList("t1".to_string()),
863 "/open-apis/task/v2/tasks/t1/subtasks".to_string(),
864 ),
865 (
866 TaskApiV2::TaskAddTasklist("t1".to_string()),
867 "/open-apis/task/v2/tasks/t1/add_tasklist".to_string(),
868 ),
869 (
870 TaskApiV2::TaskRemoveTasklist("t1".to_string()),
871 "/open-apis/task/v2/tasks/t1/remove_tasklist".to_string(),
872 ),
873 (
874 TaskApiV2::TaskGetTasklists("t1".to_string()),
875 "/open-apis/task/v2/tasks/t1/tasklists".to_string(),
876 ),
877 (
878 TaskApiV2::TaskAddMembers("t1".to_string()),
879 "/open-apis/task/v2/tasks/t1/add_members".to_string(),
880 ),
881 (
882 TaskApiV2::TaskRemoveMembers("t1".to_string()),
883 "/open-apis/task/v2/tasks/t1/remove_members".to_string(),
884 ),
885 (
886 TaskApiV2::TaskAddReminders("t1".to_string()),
887 "/open-apis/task/v2/tasks/t1/add_reminders".to_string(),
888 ),
889 (
890 TaskApiV2::TaskRemoveReminders("t1".to_string()),
891 "/open-apis/task/v2/tasks/t1/remove_reminders".to_string(),
892 ),
893 (
894 TaskApiV2::TaskAddDependencies("t1".to_string()),
895 "/open-apis/task/v2/tasks/t1/add_dependencies".to_string(),
896 ),
897 (
898 TaskApiV2::TaskRemoveDependencies("t1".to_string()),
899 "/open-apis/task/v2/tasks/t1/remove_dependencies".to_string(),
900 ),
901 (
902 TaskApiV2::TasklistGetTasks("tl1".to_string()),
903 "/open-apis/task/v2/tasklists/tl1/tasks".to_string(),
904 ),
905 (
906 TaskApiV2::TasklistAddMembers("tl1".to_string()),
907 "/open-apis/task/v2/tasklists/tl1/add_members".to_string(),
908 ),
909 (
910 TaskApiV2::TasklistRemoveMembers("tl1".to_string()),
911 "/open-apis/task/v2/tasklists/tl1/remove_members".to_string(),
912 ),
913 (
914 TaskApiV2::SectionGetTasks("s1".to_string()),
915 "/open-apis/task/v2/sections/s1/tasks".to_string(),
916 ),
917 (
918 TaskApiV2::ActivitySubscriptionCreate("tl1".to_string()),
919 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions".to_string(),
920 ),
921 (
922 TaskApiV2::ActivitySubscriptionGet("tl1".to_string(), "as1".to_string()),
923 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
924 ),
925 (
926 TaskApiV2::ActivitySubscriptionUpdate("tl1".to_string(), "as1".to_string()),
927 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
928 ),
929 (
930 TaskApiV2::ActivitySubscriptionDelete("tl1".to_string(), "as1".to_string()),
931 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions/as1".to_string(),
932 ),
933 (
934 TaskApiV2::ActivitySubscriptionList("tl1".to_string()),
935 "/open-apis/task/v2/tasklists/tl1/activity_subscriptions".to_string(),
936 ),
937 (
938 TaskApiV2::CustomFieldOptionCreate("cf1".to_string()),
939 "/open-apis/task/v2/custom_fields/cf1/options".to_string(),
940 ),
941 (
942 TaskApiV2::CustomFieldOptionUpdate("cf1".to_string(), "op1".to_string()),
943 "/open-apis/task/v2/custom_fields/cf1/options/op1".to_string(),
944 ),
945 (
946 TaskApiV2::AttachmentGet("a1".to_string()),
947 "/open-apis/task/v2/attachments/a1".to_string(),
948 ),
949 (
950 TaskApiV2::AttachmentList,
951 "/open-apis/task/v2/attachments".to_string(),
952 ),
953 (
954 TaskApiV2::CustomFieldAdd("cf1".to_string()),
955 "/open-apis/task/v2/custom_fields/cf1/add".to_string(),
956 ),
957 (
958 TaskApiV2::CustomFieldRemove("cf1".to_string()),
959 "/open-apis/task/v2/custom_fields/cf1/remove".to_string(),
960 ),
961 ];
962
963 for (api, expected) in cases {
964 assert_eq!(api.to_url(), expected);
965 }
966 }
967
968 #[test]
969 fn test_approval_api_v4_to_url() {
970 let cases = vec![
971 (
972 ApprovalApiV4::ApprovalCreate,
973 "/open-apis/approval/v4/approvals".to_string(),
974 ),
975 (
976 ApprovalApiV4::ApprovalGet("code1".to_string()),
977 "/open-apis/approval/v4/approvals/code1".to_string(),
978 ),
979 (
980 ApprovalApiV4::ApprovalSubscribe("code1".to_string()),
981 "/open-apis/approval/v4/approvals/code1/subscribe".to_string(),
982 ),
983 (
984 ApprovalApiV4::ApprovalUnsubscribe("code1".to_string()),
985 "/open-apis/approval/v4/approvals/code1/unsubscribe".to_string(),
986 ),
987 (
988 ApprovalApiV4::ExternalApprovalCreate,
989 "/open-apis/approval/v4/external_approvals".to_string(),
990 ),
991 (
992 ApprovalApiV4::ExternalApprovalGet("code1".to_string()),
993 "/open-apis/approval/v4/external_approvals/code1".to_string(),
994 ),
995 (
996 ApprovalApiV4::ExternalInstanceCheck,
997 "/open-apis/approval/v4/external_instances/check".to_string(),
998 ),
999 (
1000 ApprovalApiV4::ExternalInstanceCreate,
1001 "/open-apis/approval/v4/external_instances".to_string(),
1002 ),
1003 (
1004 ApprovalApiV4::ExternalTaskList,
1005 "/open-apis/approval/v4/external_tasks".to_string(),
1006 ),
1007 (
1008 ApprovalApiV4::InstanceAddSign,
1009 "/open-apis/approval/v4/instances/add_sign".to_string(),
1010 ),
1011 (
1012 ApprovalApiV4::InstanceCancel,
1013 "/open-apis/approval/v4/instances/cancel".to_string(),
1014 ),
1015 (
1016 ApprovalApiV4::InstanceCc,
1017 "/open-apis/approval/v4/instances/cc".to_string(),
1018 ),
1019 (
1020 ApprovalApiV4::InstanceCreate,
1021 "/open-apis/approval/v4/instances".to_string(),
1022 ),
1023 (
1024 ApprovalApiV4::InstanceGet("ins1".to_string()),
1025 "/open-apis/approval/v4/instances/ins1".to_string(),
1026 ),
1027 (
1028 ApprovalApiV4::InstanceList("code1".to_string()),
1029 "/open-apis/approval/v4/instances?approval_code=code1".to_string(),
1030 ),
1031 (
1032 ApprovalApiV4::InstancePreview,
1033 "/open-apis/approval/v4/instances/preview".to_string(),
1034 ),
1035 (
1036 ApprovalApiV4::InstanceQuery,
1037 "/open-apis/approval/v4/instances/query".to_string(),
1038 ),
1039 (
1040 ApprovalApiV4::InstanceSearchCc,
1041 "/open-apis/approval/v4/instances/search_cc".to_string(),
1042 ),
1043 (
1044 ApprovalApiV4::InstanceSpecifiedRollback("ins1".to_string()),
1045 "/open-apis/approval/v4/instances/specified_rollback".to_string(),
1046 ),
1047 (
1048 ApprovalApiV4::InstanceCommentCreate("ins1".to_string()),
1049 "/open-apis/approval/v4/instances/ins1/comments".to_string(),
1050 ),
1051 (
1052 ApprovalApiV4::InstanceCommentDelete("ins1".to_string(), "c1".to_string()),
1053 "/open-apis/approval/v4/instances/ins1/comments/c1".to_string(),
1054 ),
1055 (
1056 ApprovalApiV4::InstanceCommentList("ins1".to_string()),
1057 "/open-apis/approval/v4/instances/ins1/comments".to_string(),
1058 ),
1059 (
1060 ApprovalApiV4::TaskApprove,
1061 "/open-apis/approval/v4/tasks/approve".to_string(),
1062 ),
1063 (
1064 ApprovalApiV4::TaskQuery,
1065 "/open-apis/approval/v4/tasks/query".to_string(),
1066 ),
1067 (
1068 ApprovalApiV4::TaskReject,
1069 "/open-apis/approval/v4/tasks/reject".to_string(),
1070 ),
1071 (
1072 ApprovalApiV4::TaskResubmit,
1073 "/open-apis/approval/v4/tasks/resubmit".to_string(),
1074 ),
1075 (
1076 ApprovalApiV4::TaskSearch,
1077 "/open-apis/approval/v4/tasks/search".to_string(),
1078 ),
1079 (
1080 ApprovalApiV4::TaskTransfer,
1081 "/open-apis/approval/v4/tasks/transfer".to_string(),
1082 ),
1083 ];
1084
1085 for (api, expected) in cases {
1086 assert_eq!(api.to_url(), expected);
1087 }
1088 }
1089
1090 #[test]
1091 fn test_board_api_v1_to_url() {
1092 let cases = vec![
1093 (
1094 BoardApiV1::WhiteboardNodeCreate("b1".to_string()),
1095 "/open-apis/board/v1/whiteboards/b1/nodes".to_string(),
1096 ),
1097 (
1098 BoardApiV1::WhiteboardNodeList("b1".to_string()),
1099 "/open-apis/board/v1/whiteboards/b1/nodes".to_string(),
1100 ),
1101 (
1102 BoardApiV1::WhiteboardUpdateTheme("b1".to_string()),
1103 "/open-apis/board/v1/whiteboards/b1/update_theme".to_string(),
1104 ),
1105 (
1106 BoardApiV1::WhiteboardTheme("b1".to_string()),
1107 "/open-apis/board/v1/whiteboards/b1/theme".to_string(),
1108 ),
1109 (
1110 BoardApiV1::WhiteboardDownloadAsImage("b1".to_string()),
1111 "/open-apis/board/v1/whiteboards/b1/download_as_image".to_string(),
1112 ),
1113 (
1114 BoardApiV1::WhiteboardNodeCreatePlantuml("b1".to_string()),
1115 "/open-apis/board/v1/whiteboards/b1/nodes/plantuml".to_string(),
1116 ),
1117 ];
1118
1119 for (api, expected) in cases {
1120 assert_eq!(api.to_url(), expected);
1121 }
1122 }
1123
1124 #[test]
1125 fn issue_194_workflow_new_endpoint_paths() {
1126 assert_eq!(
1127 crate::common::BoardV1Endpoint::WhiteboardNodeBatchDelete("board_123".to_string())
1128 .to_url(),
1129 "/open-apis/board/v1/whiteboards/board_123/nodes/batch_delete"
1130 );
1131 assert_eq!(
1132 crate::common::TaskV2Endpoint::TaskSetAncestorTask("task_123".to_string()).to_url(),
1133 "/open-apis/task/v2/tasks/task_123/set_ancestor_task"
1134 );
1135 assert_eq!(
1136 crate::common::TaskV2Endpoint::ListRelatedTask.to_url(),
1137 "/open-apis/task/v2/task_v2/list_related_task"
1138 );
1139 assert_eq!(
1140 crate::common::TaskV2Endpoint::TaskSubscription.to_url(),
1141 "/open-apis/task/v2/task_v2/task_subscription"
1142 );
1143 }
1144}