module.exports = function(msg) { var issueKey = msg.match[1]; var backlog = backlogApi(); var issue = null; var items = null; var tasks = []; tasks.push(function(next) { backlog.getIssue({ issueKey: issueKey }, function(err, i) { if (err) return next(err); issue = i; return next(); }); }); tasks.push(function(next) { backlog.getComments({ issueId: issue.id }, function(err, i) { if (err) return next(err); items = i; return next(); }); }); tasks.push(function(next) { var messages = []; messages.push('count=' + items.length); messages = messages.concat(items.map(function(i) { return i.created_user.name + '\t' + i.content; })); var message = messages.join('\n'); next(null, message); }); async.waterfall(tasks, function(err, message) { if (err) return msg.send(err); msg.send(message); }); };
robot.respond(/script-issue(\s+(\S.*?))?\s*$/i, function(res) { var spaceId = process.env.HUBOT_SCRIPT_ISSUE_SPACE_ID; var username = process.env.HUBOT_SCRIPT_ISSUE_USERNAME; var password = process.env.HUBOT_SCRIPT_ISSUE_PASSWORD; var projectKey = process.env.HUBOT_SCRIPT_ISSUE_PROJECT_KEY; var componentName = process.env.HUBOT_SCRIPT_ISSUE_COMPONENT_NAME; var backlog = backlogApi(spaceId, username, password); var projectId; var componentId; backlog.getProject({ projectKey: projectKey }) .then(function(project) { projectId = project.id; return backlog.getComponents({ projectId: projectId }); }) .then(function(components) { var component = components.filter(function(c) { return c.name === componentName; })[0]; componentId = component.id; if (res.match[1]) { return backlog.createIssue({ projectId: projectId, summary: res.match[2], componentId: componentId, }); } else { var deferred = q.defer(); deferred.resolve(); return deferred.promise; } }) .then(function() { return backlog.findIssue({ projectId: projectId, componentId: componentId, statusId: [1, 2, 3], }); }) .then(function(issues) { res.send(issues.map(function(i) { return i.summary + ' ' + i.url; }).join('\n')); }) .fail(function(e) { res.send('error:' + util.inspect(e)); }); });
setInterval(function() { var backlog = backlogApi(); backlog.getTimeline() .then(function(activities) { activities.reverse().forEach(function(activity) { if (!allActivities[activity.updated_on]) { allActivities[activity.updated_on] = activity; console.log(formatActivity(activity)); } }); }) .catch(function(err) { console.error(err); }); }, 10 * 1000);
module.exports = function(msg) { var projectKey = msg.match[1]; var backlog = backlogApi(); var project = null; var items = null; var tasks = []; tasks.push(function(next) { backlog.getProject({ projectKey: projectKey }, function(err, p) { if (err) return next(err); project = p; next(); }); }); tasks.push(function(next) { backlog.getIssueTypes({ projectId: project.id }, function(err, i) { if (err) return next(err); items = i; return next(); }); }); tasks.push(function(next) { var messages = []; messages.push('count=' + items.length); messages = messages.concat(items.map(function(i) { return i.name; })); var message = messages.join('\n'); next(null, message); }); async.waterfall(tasks, function(err, message) { if (err) return msg.send(err); msg.send(message); }); };
var client = function(options) { var auth = authenticate(options); return backlogApi(auth.spaceId, auth.username, auth.password); };