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

Commit d3f5379

Browse files
Improved support for GitHub issue tracker
1 parent e612088 commit d3f5379

File tree

7 files changed

+31
-29
lines changed

7 files changed

+31
-29
lines changed

src/GitTools.IssueTrackers/Context/Extensions/IIssueTrackerContextExtensions.cs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,24 @@ public static bool Validate(this IIssueTrackerContext context)
2626

2727
public static IssueTracker? GetIssueTracker(this IIssueTrackerContext context)
2828
{
29-
return IssueTracker.Jira;
29+
var server = string.IsNullOrWhiteSpace(context.Server) ? string.Empty : context.Server.ToLower();
3030

3131
// TODO: implement more detections
3232

33-
//if (context.IssueTracker is BitBucketContext)
34-
//{
35-
// return IssueTracker.BitBucket;
36-
//}
33+
if (server.Contains("bitbucket"))
34+
{
35+
return IssueTracker.BitBucket;
36+
}
3737

38-
//if (context.IssueTracker is GitHubContext)
39-
//{
40-
// return IssueTracker.GitHub;
41-
//}
38+
if (server.Contains("github"))
39+
{
40+
return IssueTracker.GitHub;
41+
}
42+
43+
if (server.Contains("atlassian"))
44+
{
45+
return IssueTracker.Jira;
46+
}
4247

4348
//if (context.IssueTracker is JiraContext)
4449
//{
@@ -51,6 +56,8 @@ public static bool Validate(this IIssueTrackerContext context)
5156
//}
5257

5358
//return null;
59+
60+
return IssueTracker.Jira;
5461
}
5562
}
5663
}

src/GitTools.IssueTrackers/GitTools.IssueTrackers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
<Compile Include="Context\IssueTrackerContext.cs" />
8080
<Compile Include="IssueTrackers\GitHub\GitHubIssueTracker.cs" />
8181
<Compile Include="IssueTrackers\IssueTrackerBase.cs" />
82-
<Compile Include="IssueTrackers\IssueTrackerFactoryr.cs" />
82+
<Compile Include="IssueTrackers\IssueTrackerFactory.cs" />
8383
<Compile Include="IssueTrackers\Jira\JiraIssueTracker.cs" />
8484
<Compile Include="Models\Contributor.cs" />
8585
<Compile Include="Models\Issue.cs" />

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Globalization;
66
using System.Linq;
77
using System.Text.RegularExpressions;
8+
using System.Threading.Tasks;
89
using Logging;
910
using Octokit;
1011
using Issue = IssueTrackers.Issue;
@@ -19,7 +20,7 @@ public GitHubIssueTracker(IIssueTrackerContext issueTrackerContext)
1920

2021
}
2122

22-
public override IEnumerable<Issue> GetIssues(IssueTrackerFilter filter)
23+
public override async Task<IEnumerable<Issue>> GetIssuesAsync(IssueTrackerFilter filter)
2324
{
2425
var gitHubClient = new GitHubClient(new ProductHeaderValue("GitReleaseNotes"));
2526

@@ -42,9 +43,9 @@ public override IEnumerable<Issue> GetIssues(IssueTrackerFilter filter)
4243
GetRepository(out organisation, out repository);
4344

4445
var repositoryIssueRequest = PrepareFilter(filter);
45-
var forRepository = gitHubClient.Issue.GetAllForRepository(organisation, repository, repositoryIssueRequest);
46+
var forRepository = await gitHubClient.Issue.GetAllForRepository(organisation, repository, repositoryIssueRequest);
4647

47-
var readOnlyList = forRepository.Result.Where(i => i.ClosedAt > filter.Since);
48+
var readOnlyList = forRepository.Where(i => i.ClosedAt > filter.Since);
4849

4950
//var userCache = new Dictionary<string, User>();
5051
//Func<User, string> getUserName = u =>
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
namespace GitTools.IssueTrackers
22
{
3-
using System;
43
using System.Collections.Generic;
5-
using Octokit;
4+
using System.Threading.Tasks;
65

76
public interface IIssueTracker
87
{
9-
IEnumerable<Issue> GetIssues(IssueTrackerFilter filter);
8+
Task<IEnumerable<Issue>> GetIssuesAsync(IssueTrackerFilter filter);
109
}
1110
}

src/GitTools.IssueTrackers/IssueTrackers/IssueTrackerBase.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
using System;
44
using System.Collections.Generic;
5+
using System.Threading.Tasks;
56

67
public abstract class IssueTrackerBase : IIssueTracker
78
{
@@ -12,6 +13,6 @@ public IssueTrackerBase(IIssueTrackerContext issueTrackerContext)
1213

1314
protected IIssueTrackerContext IssueTrackerContext { get; private set; }
1415

15-
public abstract IEnumerable<Issue> GetIssues(IssueTrackerFilter filter);
16+
public abstract Task<IEnumerable<Issue>> GetIssuesAsync(IssueTrackerFilter filter);
1617
}
1718
}

src/GitTools.IssueTrackers/IssueTrackers/IssueTrackerFactoryr.cs renamed to src/GitTools.IssueTrackers/IssueTrackers/IssueTrackerFactory.cs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
namespace GitTools.IssueTrackers
22
{
3+
using GitHub;
34
using Jira;
5+
using Octokit;
46

57
public class IssueTrackerFactory : IIssueTrackerFactory
68
{
@@ -11,17 +13,8 @@ public IIssueTracker CreateIssueTracker(IIssueTrackerContext context)
1113
//case IssueTracker.BitBucket:
1214
// break;
1315

14-
//case IssueTracker.GitHub:
15-
// return new GitHubIssueTracker(repository, () =>
16-
// {
17-
// var gitHubClient = new GitHubClient(new ProductHeaderValue("GitReleaseNotes"));
18-
// if (context.IssueTracker.Token != null)
19-
// {
20-
// gitHubClient.Credentials = new Octokit.Credentials(context.IssueTracker.Token);
21-
// }
22-
23-
// return gitHubClient;
24-
// }, context);
16+
case IssueTracker.GitHub:
17+
return new GitHubIssueTracker(context);
2518

2619
case IssueTracker.Jira:
2720
return new JiraIssueTracker(context);

src/GitTools.IssueTrackers/IssueTrackers/Jira/JiraIssueTracker.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System;
44
using System.Collections.Generic;
55
using System.Linq;
6+
using System.Threading.Tasks;
67
using Atlassian.Jira;
78
using Logging;
89
using Issue = IssueTrackers.Issue;
@@ -20,7 +21,7 @@ public JiraIssueTracker(IIssueTrackerContext issueTrackerContext)
2021
{
2122
}
2223

23-
public override IEnumerable<Issue> GetIssues(IssueTrackerFilter filter)
24+
public override async Task<IEnumerable<Issue>> GetIssuesAsync(IssueTrackerFilter filter)
2425
{
2526
Log.DebugFormat("Connecting to Jira server '{0}'", IssueTrackerContext.Server);
2627

0 commit comments

Comments
 (0)