Implemented pull request merge functionality

This commit is contained in:
Josh Sullivan
2013-11-12 00:17:51 -05:00
committed by Brendan Forster
parent a2d303684f
commit fddae25b6f
10 changed files with 109 additions and 0 deletions
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Reactive;
using System.Threading.Tasks;
namespace Octokit
{
@@ -62,5 +63,16 @@ namespace Octokit
/// </param>
/// <returns></returns>
IObservable<PullRequest> Update(string owner, string name, int number, PullRequestUpdate pullRequestUpdate);
/// <summary>
/// Merges a pull request.
/// </summary>
/// <remarks>http://developer.github.com/v3/pulls/#merge-a-pull-request-merge-buttontrade</remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="mergePullRequest">A <see cref="MergePullRequest"/> instance describing a pull request merge</param>
/// <returns></returns>
IObservable<PullRequestMerge> Merge(string owner, string name, int number, MergePullRequest mergePullRequest);
}
}
@@ -102,5 +102,23 @@ namespace Octokit.Reactive.Clients
return _client.Update(owner, name, number, pullRequestUpdate).ToObservable();
}
/// <summary>
/// Merges a pull request.
/// </summary>
/// <remarks>http://developer.github.com/v3/pulls/#merge-a-pull-request-merge-buttontrade</remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="mergePullRequest">A <see cref="MergePullRequest"/> instance describing a pull request merge</param>
/// <returns></returns>
public IObservable<PullRequestMerge> Merge(string owner, string name, int number, MergePullRequest mergePullRequest)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNull(mergePullRequest, "mergePullRequest");
return _client.Merge(owner, name, number, mergePullRequest).ToObservable();
}
}
}
+11
View File
@@ -61,5 +61,16 @@ namespace Octokit
/// </param>
/// <returns></returns>
Task<PullRequest> Update(string owner, string name, int number, PullRequestUpdate pullRequestUpdate);
/// <summary>
/// Merges a pull request.
/// </summary>
/// <remarks>http://developer.github.com/v3/pulls/#merge-a-pull-request-merge-buttontrade</remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="mergePullRequest">A <see cref="MergePullRequest"/> instance describing a pull request merge</param>
/// <returns></returns>
Task<PullRequestMerge> Merge(string owner, string name, int number, MergePullRequest mergePullRequest);
}
}
+18
View File
@@ -95,5 +95,23 @@ namespace Octokit
return ApiConnection.Patch<PullRequest>(ApiUrls.PullRequest(owner, name, number), pullRequestUpdate);
}
/// <summary>
/// Merges a pull request.
/// </summary>
/// <remarks>http://developer.github.com/v3/pulls/#merge-a-pull-request-merge-buttontrade</remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="mergePullRequest">A <see cref="MergePullRequest"/> instance describing a pull request merge</param>
/// <returns></returns>
public Task<PullRequestMerge> Merge(string owner, string name, int number, MergePullRequest mergePullRequest)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNull(mergePullRequest, "mergePullRequest");
return ApiConnection.Put<PullRequestMerge>(ApiUrls.PullRequest(owner, name, number), mergePullRequest);
}
}
}
@@ -0,0 +1,22 @@
using System;
namespace Octokit
{
/// <summary>
/// Used to merge a pull request.
/// </summary>
public class MergePullRequest
{
public MergePullRequest(string message)
{
Ensure.ArgumentNotNull(message, "message");
Message = message;
}
/// <summary>
/// The message that will be used for the merge commit (optional)
/// </summary>
public string Message { get; private set; }
}
}
@@ -0,0 +1,22 @@
using System;
namespace Octokit
{
public class PullRequestMerge
{
/// <summary>
/// The sha reference of the commit.
/// </summary>
public string sha { get; set; }
/// <summary>
/// True if merged successfully, otherwise false.
/// </summary>
public bool Merged { get; set; }
/// <summary>
/// The message that will be used for the merge commit.
/// </summary>
public string Message { get; set; }
}
}
+1
View File
@@ -86,6 +86,7 @@
<Compile Include="Helpers\ParameterAttribute.cs" />
<Compile Include="Helpers\ReflectionExtensions.cs" />
<Compile Include="Models\Request\LabelUpdate.cs" />
<Compile Include="Models\Request\MergePullRequest.cs" />
<Compile Include="Models\Request\MilestoneUpdate.cs" />
<Compile Include="Models\Request\NewBlob.cs" />
<Compile Include="Models\Request\NewCommit.cs" />
+2
View File
@@ -113,7 +113,9 @@
<Compile Include="Models\Response\Notification.cs" />
<Compile Include="Models\Response\NotificationInfo.cs" />
<Compile Include="Models\Response\PullRequest.cs" />
<Compile Include="Models\Response\PullRequestMerge.cs" />
<Compile Include="Models\Request\RepositoryIssueRequest.cs" />
<Compile Include="Models\Request\MergePullRequest.cs" />
<Compile Include="Models\Request\MilestoneRequest.cs" />
<Compile Include="Models\Response\TagObject.cs" />
<Compile Include="Models\Response\TreeItem.cs" />
+2
View File
@@ -108,7 +108,9 @@
<Compile Include="Models\Response\Notification.cs" />
<Compile Include="Models\Response\NotificationInfo.cs" />
<Compile Include="Models\Response\PullRequest.cs" />
<Compile Include="Models\Response\PullRequestMerge.cs" />
<Compile Include="Models\Request\RepositoryIssueRequest.cs" />
<Compile Include="Models\Request\MergePullRequest.cs" />
<Compile Include="Models\Request\MilestoneRequest.cs" />
<Compile Include="Models\Response\TagObject.cs" />
<Compile Include="Models\Response\TreeItem.cs" />
+1
View File
@@ -136,6 +136,7 @@
<Compile Include="Helpers\ReflectionExtensions.cs" />
<Compile Include="Models\Request\NewTeam.cs" />
<Compile Include="Models\Request\UpdateTeam.cs" />
<Compile Include="Models\Request\MergePullRequest.cs" />
<Compile Include="Models\Request\MilestoneUpdate.cs" />
<Compile Include="Models\Request\NewCommit.cs" />
<Compile Include="Models\Request\NewCommitStatus.cs" />