index.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. // Zoho Tasks Plugin v2.0.0
  2. // EU data center: accounts.zoho.eu
  3. var auth = require('./lib/auth');
  4. var tasks = require('./lib/tasks');
  5. shadowman.log.info('Zoho Tasks plugin v2.0.0 loaded');
  6. // Auth tools
  7. shadowman.tools.register('setup_auth', function(args, context) {
  8. shadowman.storage.set('auth_conversation_id', context.conversationId);
  9. return auth.setupAuth(args.grant_token);
  10. });
  11. shadowman.tools.register('auth_status', function(args, context) {
  12. return auth.getStatus();
  13. });
  14. shadowman.tools.register('resolve_portal', function(args, context) {
  15. var token = auth.getValidToken();
  16. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  17. return auth.resolvePortal(token, args);
  18. });
  19. // Project tools
  20. shadowman.tools.register('list_projects', function(args, context) {
  21. var token = auth.getValidToken();
  22. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  23. return tasks.listProjects(token, args.index || 1);
  24. });
  25. // Task tools
  26. shadowman.tools.register('list_tasks', function(args, context) {
  27. var token = auth.getValidToken();
  28. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  29. if (!args.project_id) return { error: 'Missing project_id parameter' };
  30. return tasks.listTasks(token, args.project_id, args);
  31. });
  32. shadowman.tools.register('get_task', function(args, context) {
  33. var token = auth.getValidToken();
  34. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  35. if (!args.project_id) return { error: 'Missing project_id parameter' };
  36. if (!args.task_id) return { error: 'Missing task_id parameter' };
  37. return tasks.getTask(token, args.project_id, args.task_id);
  38. });
  39. shadowman.tools.register('create_task', function(args, context) {
  40. var token = auth.getValidToken();
  41. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  42. if (!args.project_id) return { error: 'Missing project_id parameter' };
  43. if (!args.name) return { error: 'Missing name parameter' };
  44. return tasks.createTask(token, args.project_id, args);
  45. });
  46. shadowman.tools.register('update_task', function(args, context) {
  47. var token = auth.getValidToken();
  48. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  49. if (!args.project_id) return { error: 'Missing project_id parameter' };
  50. if (!args.task_id) return { error: 'Missing task_id parameter' };
  51. return tasks.updateTask(token, args.project_id, args.task_id, args);
  52. });
  53. shadowman.tools.register('delete_task', function(args, context) {
  54. var token = auth.getValidToken();
  55. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  56. if (!args.project_id) return { error: 'Missing project_id parameter' };
  57. if (!args.task_id) return { error: 'Missing task_id parameter' };
  58. return tasks.deleteTask(token, args.project_id, args.task_id);
  59. });
  60. shadowman.tools.register('my_tasks', function(args, context) {
  61. var token = auth.getValidToken();
  62. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  63. return tasks.getMyTasks(token, args);
  64. });
  65. shadowman.tools.register('search_tasks', function(args, context) {
  66. var token = auth.getValidToken();
  67. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  68. if (!args.query) return { error: 'Missing query parameter' };
  69. return tasks.searchTasks(token, args);
  70. });
  71. // Comment tools
  72. shadowman.tools.register('add_comment', function(args, context) {
  73. var token = auth.getValidToken();
  74. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  75. if (!args.project_id) return { error: 'Missing project_id parameter' };
  76. if (!args.task_id) return { error: 'Missing task_id parameter' };
  77. if (!args.content) return { error: 'Missing content parameter' };
  78. return tasks.addComment(token, args.project_id, args.task_id, args.content);
  79. });
  80. shadowman.tools.register('update_comment', function(args, context) {
  81. var token = auth.getValidToken();
  82. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  83. if (!args.project_id) return { error: 'Missing project_id parameter' };
  84. if (!args.task_id) return { error: 'Missing task_id parameter' };
  85. if (!args.comment_id) return { error: 'Missing comment_id parameter' };
  86. if (!args.content) return { error: 'Missing content parameter' };
  87. return tasks.updateComment(token, args.project_id, args.task_id, args.comment_id, args.content);
  88. });
  89. shadowman.tools.register('delete_comment', function(args, context) {
  90. var token = auth.getValidToken();
  91. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  92. if (!args.project_id) return { error: 'Missing project_id parameter' };
  93. if (!args.task_id) return { error: 'Missing task_id parameter' };
  94. if (!args.comment_id) return { error: 'Missing comment_id parameter' };
  95. return tasks.deleteComment(token, args.project_id, args.task_id, args.comment_id);
  96. });
  97. shadowman.tools.register('log_time', function(args, context) {
  98. var token = auth.getValidToken();
  99. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  100. if (!args.project_id) return { error: 'Missing project_id parameter' };
  101. if (!args.task_id) return { error: 'Missing task_id parameter' };
  102. if (args.hours === undefined) return { error: 'Missing hours parameter' };
  103. return tasks.logTime(token, args.project_id, args);
  104. });
  105. shadowman.tools.register('list_timesheets', function(args, context) {
  106. var token = auth.getValidToken();
  107. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  108. if (!args.project_id) return { error: 'Missing project_id parameter' };
  109. return tasks.listTimesheets(token, args.project_id, args);
  110. });
  111. shadowman.tools.register('delete_timesheet', function(args, context) {
  112. var token = auth.getValidToken();
  113. if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' };
  114. if (!args.project_id) return { error: 'Missing project_id parameter' };
  115. if (!args.log_id) return { error: 'Missing log_id parameter' };
  116. return tasks.deleteTimesheet(token, args.project_id, args.log_id);
  117. });