Skip to content

Commit 14ba367

Browse files
committed
PullRequest.Open, PullRequest.Close
1 parent 5e6edd3 commit 14ba367

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

Git.hub/Issue.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,29 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Text;
5+
using RestSharp;
56

67
namespace Git.hub
78
{
9+
public class Issue
10+
{
11+
public int Number;
12+
13+
internal RestClient _client;
14+
public Repository Repository { get; internal set; }
15+
16+
17+
public List<IssueComment> GetComments()
18+
{
19+
var request = new RestRequest("/repos/{user}/{repo}/issues/{pull}/comments");
20+
request.AddUrlSegment("user", Repository.Owner.Login);
21+
request.AddUrlSegment("repo", Repository.Name);
22+
request.AddUrlSegment("pull", Number.ToString());
23+
24+
return _client.Get<List<IssueComment>>(request).Data;
25+
}
26+
}
27+
828
public class IssueComment
929
{
1030
public int Id { get; private set; }

Git.hub/PullRequest.cs

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,47 @@ public class PullRequest
8181
/// <returns></returns>
8282
public List<PullRequestCommit> GetCommits()
8383
{
84-
var request = new RestRequest("/repos/{user}/{repo}/pulls/{pull}/commits");
84+
var request = new RestRequest("repos/{user}/{repo}/pulls/{pull}/commits");
8585
request.AddUrlSegment("user", Repository.Owner.Login);
8686
request.AddUrlSegment("repo", Repository.Name);
8787
request.AddUrlSegment("pull", Number.ToString());
8888

8989
return _client.Get<List<PullRequestCommit>>(request).Data;
9090
}
9191

92+
public Issue ToIssue()
93+
{
94+
return new Issue { _client = _client, Repository = Repository, Number = Number };
95+
}
96+
9297
public List<IssueComment> GetIssueComments()
9398
{
94-
var request = new RestRequest("/repos/{user}/{repo}/issues/{pull}/comments");
99+
return ToIssue().GetComments();
100+
}
101+
102+
public bool Open()
103+
{
104+
return UpdateState("open");
105+
}
106+
107+
public bool Close()
108+
{
109+
return UpdateState("closed");
110+
}
111+
112+
private bool UpdateState(string state)
113+
{
114+
var request = new RestRequest("repos/{user}/{repo}/pulls/{pull}");
95115
request.AddUrlSegment("user", Repository.Owner.Login);
96116
request.AddUrlSegment("repo", Repository.Name);
97117
request.AddUrlSegment("pull", Number.ToString());
98118

99-
return _client.Get<List<IssueComment>>(request).Data;
119+
request.RequestFormat = DataFormat.Json;
120+
request.AddBody(new
121+
{
122+
state = state
123+
});
124+
return _client.Patch(request).StatusCode == System.Net.HttpStatusCode.OK;
100125
}
101126
}
102127
}

0 commit comments

Comments
 (0)