Skip to content

Commit c63164c

Browse files
committed
added PullRequest.GetCommits()
1 parent 5d4a395 commit c63164c

File tree

4 files changed

+73
-2
lines changed

4 files changed

+73
-2
lines changed

Git.hub/Commit.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
6+
namespace Git.hub
7+
{
8+
public class Ref
9+
{
10+
public string Url { get; private set; }
11+
public string Sha { get; private set; }
12+
}
13+
14+
public class PullRequestCommit
15+
{
16+
public string Sha { get; private set; }
17+
public string Url { get; private set; }
18+
public User Author { get; private set; }
19+
public User Committer { get; private set; }
20+
public List<Ref> Parents { get; private set; }
21+
public Commit Commit { get; private set; }
22+
}
23+
24+
public class CommitAuthor
25+
{
26+
public string Name { get; private set; }
27+
public string Email { get; private set; }
28+
public DateTime Date { get; private set; }
29+
}
30+
31+
// Not too sure this is the same for normal commits.
32+
public class Commit
33+
{
34+
public string Url { get; private set; }
35+
public CommitAuthor Author { get; private set; }
36+
public CommitAuthor Committer { get; private set; }
37+
public string Message { get; private set; }
38+
public Ref Tree { get; private set; }
39+
}
40+
}

Git.hub/Git.hub.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
<ItemGroup>
4141
<Compile Include="Branch.cs" />
4242
<Compile Include="Client.cs" />
43+
<Compile Include="Commit.cs" />
4344
<Compile Include="OAuth2Helper.cs" />
4445
<Compile Include="Organization.cs" />
4546
<Compile Include="Properties\AssemblyInfo.cs" />

Git.hub/PullRequest.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System;
2+
using RestSharp;
3+
using System.Collections.Generic;
24

35
namespace Git.hub
46
{
@@ -15,6 +17,11 @@ public class PullRequestInfo
1517
/// </summary>
1618
public class PullRequest
1719
{
20+
/// <summary>
21+
/// Repository to which this pull request belongs.
22+
/// </summary>
23+
public Repository Repository { get; internal set; }
24+
1825
/// <summary>
1926
/// ID of the pull request
2027
/// </summary>
@@ -65,5 +72,17 @@ public class PullRequest
6572
/// </summary>
6673
public User MergedBy { get; private set; }
6774
*/
75+
76+
internal RestClient _client;
77+
78+
public List<PullRequestCommit> GetCommits()
79+
{
80+
var request = new RestRequest("/repos/{user}/{repo}/pulls/{pull}/commits");
81+
request.AddUrlSegment("user", Repository.Owner.Login);
82+
request.AddUrlSegment("repo", Repository.Name);
83+
request.AddUrlSegment("pull", Number.ToString());
84+
85+
return _client.Get<List<PullRequestCommit>>(request).Data;
86+
}
6887
}
6988
}

Git.hub/Repository.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,12 @@ public IList<PullRequest> GetPullRequests()
9696
request.AddUrlSegment("user", Owner.Login);
9797
request.AddUrlSegment("repo", Name);
9898

99-
return _client.Get<List<PullRequest>>(request).Data;
99+
var list = _client.Get<List<PullRequest>>(request).Data;
100+
if (list == null)
101+
return null;
102+
103+
list.ForEach(pr => { pr._client = _client; pr.Repository = this; });
104+
return list;
100105
}
101106

102107
/// <summary>
@@ -111,7 +116,13 @@ public PullRequest GetPullRequest(int id)
111116
request.AddUrlSegment("repo", Name);
112117
request.AddUrlSegment("pull", id.ToString());
113118

114-
return _client.Get<PullRequest>(request).Data;
119+
var pullrequest = _client.Get<PullRequest>(request).Data;
120+
if (pullrequest == null)
121+
return null;
122+
123+
pullrequest._client = _client;
124+
pullrequest.Repository = this;
125+
return pullrequest;
115126
}
116127

117128
#if _

0 commit comments

Comments
 (0)