Skip to content
This repository was archived by the owner on Jun 27, 2019. It is now read-only.

Commit 287e406

Browse files
Add support for contributors in GitHubIssueTracker
1 parent 7e2cdd9 commit 287e406

File tree

4 files changed

+26
-20
lines changed

4 files changed

+26
-20
lines changed

src/GitTools.IssueTrackers/Context/Interfaces/IIssueTrackerContext.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ public interface IIssueTrackerContext : IDisposable
66
{
77
string Server { get; set; }
88

9+
string DiffUrlFormat { get; set; }
10+
911
string ProjectId { get; set; }
1012

1113
IAuthenticationContext Authentication { get; }

src/GitTools.IssueTrackers/Context/IssueTrackerContext.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public IssueTrackerContext()
99

1010
public string Server { get; set; }
1111

12+
public string DiffUrlFormat { get; set; }
13+
1214
public string ProjectId { get; set; }
1315

1416
public IAuthenticationContext Authentication { get; private set; }

src/GitTools.IssueTrackers/IssueTrackers/GitHub/GitHubIssueTracker.cs

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ public class GitHubIssueTracker : IssueTrackerBase
1414
{
1515
private static readonly ILog Log = LogProvider.GetCurrentClassLogger();
1616

17+
private readonly Dictionary<string, User> _userCache = new Dictionary<string, User>();
18+
1719
public GitHubIssueTracker(IIssueTrackerContext issueTrackerContext)
1820
: base(issueTrackerContext)
1921
{
@@ -47,23 +49,22 @@ public override async Task<IEnumerable<Issue>> GetIssuesAsync(IssueTrackerFilter
4749

4850
var readOnlyList = forRepository.Where(i => i.ClosedAt > filter.Since);
4951

50-
//var userCache = new Dictionary<string, User>();
51-
//Func<User, string> getUserName = u =>
52-
//{
53-
// var login = u.Login;
54-
// if (!userCache.ContainsKey(login))
55-
// {
56-
// userCache.Add(login, string.IsNullOrEmpty(u.Name) ? gitHubClient.User.Get(login).Result : u);
57-
// }
52+
Func<User, string> getUserName = u =>
53+
{
54+
var login = u.Login;
55+
if (!_userCache.ContainsKey(login))
56+
{
57+
_userCache.Add(login, string.IsNullOrEmpty(u.Name) ? gitHubClient.User.Get(login).Result : u);
58+
}
5859

59-
// var user = userCache[login];
60-
// if (user != null)
61-
// {
62-
// return user.Name;
63-
// }
60+
var user = _userCache[login];
61+
if (user != null)
62+
{
63+
return user.Name;
64+
}
6465

65-
// return null;
66-
//};
66+
return null;
67+
};
6768

6869
return readOnlyList.Select(i => new Issue("#" + i.Number.ToString(CultureInfo.InvariantCulture))
6970
{
@@ -72,10 +73,10 @@ public override async Task<IEnumerable<Issue>> GetIssuesAsync(IssueTrackerFilter
7273
Title = i.Title,
7374
IssueType = i.PullRequest == null ? IssueType.Issue : IssueType.PullRequest,
7475
Labels = i.Labels.Select(l => l.Name).ToArray(),
75-
//Contributors = i.PullRequest == null ? new GitReleaseNotes.Contributor[0] : new[]
76-
//{
77-
// new GitReleaseNotes.Contributor(getUserName(i.User), i.User.Login, i.User.HtmlUrl)
78-
//}
76+
Contributors = i.PullRequest == null ? new List<GitTools.IssueTrackers.Contributor>() : new List<GitTools.IssueTrackers.Contributor>
77+
{
78+
new GitTools.IssueTrackers.Contributor(getUserName(i.User), i.User.Login, i.User.HtmlUrl)
79+
}
7980
});
8081
}
8182

src/GitTools.IssueTrackers/Models/Issue.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public Issue(string id)
1010
Id = id;
1111

1212
FixVersions = new List<Version>();
13+
Contributors = new List<Contributor>();
1314
}
1415

1516
public string Id { get; private set; }
@@ -32,6 +33,6 @@ public Issue(string id)
3233

3334
//public Uri HtmlUrl { get; set; }
3435

35-
//public Contributor[] Contributors { get; set; }
36+
public List<Contributor> Contributors { get; set; }
3637
}
3738
}

0 commit comments

Comments
 (0)