// Zoho Tasks Plugin v1.0.0 // EU data center: accounts.zoho.eu / projectsapi.zoho.eu var auth = require('./lib/auth'); var tasks = require('./lib/tasks'); shadowman.log.info('Zoho Tasks plugin v1.0.0 loaded'); // Auth tools shadowman.tools.register('setup_auth', function(args, context) { shadowman.storage.set('auth_conversation_id', context.conversationId); return auth.setupAuth(args.grant_token); }); shadowman.tools.register('auth_status', function(args, context) { return auth.getStatus(); }); // Project tools shadowman.tools.register('list_projects', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; return tasks.listProjects(token, args.index || 1); }); // Task tools shadowman.tools.register('list_tasks', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.project_id) return { error: 'Missing project_id parameter' }; return tasks.listTasks(token, args.project_id, args); }); shadowman.tools.register('get_task', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.project_id) return { error: 'Missing project_id parameter' }; if (!args.task_id) return { error: 'Missing task_id parameter' }; return tasks.getTask(token, args.project_id, args.task_id); }); shadowman.tools.register('create_task', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.project_id) return { error: 'Missing project_id parameter' }; if (!args.name) return { error: 'Missing name parameter' }; return tasks.createTask(token, args.project_id, args); }); shadowman.tools.register('update_task', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.project_id) return { error: 'Missing project_id parameter' }; if (!args.task_id) return { error: 'Missing task_id parameter' }; return tasks.updateTask(token, args.project_id, args.task_id, args); }); shadowman.tools.register('delete_task', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.project_id) return { error: 'Missing project_id parameter' }; if (!args.task_id) return { error: 'Missing task_id parameter' }; return tasks.deleteTask(token, args.project_id, args.task_id); }); shadowman.tools.register('my_tasks', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; return tasks.getMyTasks(token, args); }); shadowman.tools.register('search_tasks', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.query) return { error: 'Missing query parameter' }; return tasks.searchTasks(token, args); });