jira-sprints
Version:
Query jira sprints
68 lines (61 loc) • 2.06 kB
JavaScript
// Generated by CoffeeScript 1.9.3
(function() {
var Q, request, sprintqueryUri, sprintreportUri;
request = require('superagent');
Q = require('q');
sprintqueryUri = function(rapidViewId) {
return '/rest/greenhopper/1.0/sprintquery/' + rapidViewId;
};
sprintreportUri = '/rest/greenhopper/1.0/rapid/charts/sprintreport';
module.exports = function(params) {
var sprintqueryRequest, sprintreportRequest;
params.onTotal = params.onTotal || function() {};
params.mapCallback = params.mapCallback || function(report) {
return report;
};
sprintqueryRequest = function() {
var query;
query = request.get(params.serverRoot + sprintqueryUri(params.rapidView)).query({
includeHistoricSprints: true,
includeFutureSprints: true
});
if (params.user) {
query.auth(params.user, params.pass);
}
return query;
};
sprintreportRequest = function(sprintId) {
var query;
query = request.get(params.serverRoot + sprintreportUri).query({
rapidViewId: params.rapidView,
sprintId: sprintId
});
if (params.user) {
query.auth(params.user, params.pass);
}
return query;
};
return Q().then(function() {
return Q.ninvoke(sprintqueryRequest(), 'end');
}).then(function(response) {
var data, remaining, reportPromise, reportPromiseCalls, total;
data = response.body;
total = data.sprints.length;
params.onTotal(total);
remaining = total;
reportPromise = function(sprintId, array) {
return Q.ninvoke(sprintreportRequest(sprintId), 'end').then(function(response) {
data = response.body;
array.push(params.mapCallback(data));
return array;
});
};
reportPromiseCalls = data.sprints.map(function(sprint) {
return reportPromise.bind(null, sprint.id);
});
return reportPromiseCalls.reduce(function(soFar, f) {
return soFar.then(f);
}, Q([]));
});
};
}).call(this);