public Action DownloadIssues(string project, int start, bool includeClosedIssues,
Func<IEnumerable<Issue>, bool> onData,
Action<DownloadProgressChangedEventArgs> onProgress,
Action<bool, Exception> onCompleted)
{
Debug.Assert(project != null);
Debug.Assert(onData != null);
var client = new Gurtle.WebClient();
client.DownloadStringAsync(this.IssuesUrl());
client.DownloadStringCompleted += (sender, args) =>
{
if (args.Cancelled || args.Error != null)
{
if (onCompleted != null)
onCompleted(args.Cancelled, args.Error);
return;
}
var issues = IssueTableParser.Parse(args.Result).ToArray();
onData(issues);
if (onCompleted != null)
onCompleted(false, null);
};
if (onProgress != null)
client.DownloadProgressChanged += (sender, args) => onProgress(args);
return client.CancelAsync;
}