diff --git a/Octokit.Reactive/Clients/IObservablePullRequestsClient.cs b/Octokit.Reactive/Clients/IObservablePullRequestsClient.cs
index 35329341..9808297f 100644
--- a/Octokit.Reactive/Clients/IObservablePullRequestsClient.cs
+++ b/Octokit.Reactive/Clients/IObservablePullRequestsClient.cs
@@ -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
///
///
IObservable Update(string owner, string name, int number, PullRequestUpdate pullRequestUpdate);
+
+ ///
+ /// Merges a pull request.
+ ///
+ /// http://developer.github.com/v3/pulls/#merge-a-pull-request-merge-buttontrade
+ /// The owner of the repository
+ /// The name of the repository
+ /// The pull request number
+ /// A instance describing a pull request merge
+ ///
+ IObservable Merge(string owner, string name, int number, MergePullRequest mergePullRequest);
}
}
diff --git a/Octokit.Reactive/Clients/ObservablePullRequestsClient.cs b/Octokit.Reactive/Clients/ObservablePullRequestsClient.cs
index e0b316b7..cce9e34d 100644
--- a/Octokit.Reactive/Clients/ObservablePullRequestsClient.cs
+++ b/Octokit.Reactive/Clients/ObservablePullRequestsClient.cs
@@ -102,5 +102,23 @@ namespace Octokit.Reactive.Clients
return _client.Update(owner, name, number, pullRequestUpdate).ToObservable();
}
+
+ ///
+ /// Merges a pull request.
+ ///
+ /// http://developer.github.com/v3/pulls/#merge-a-pull-request-merge-buttontrade
+ /// The owner of the repository
+ /// The name of the repository
+ /// The pull request number
+ /// A instance describing a pull request merge
+ ///
+ public IObservable 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();
+ }
}
}
\ No newline at end of file
diff --git a/Octokit/Clients/IPullRequestsClient.cs b/Octokit/Clients/IPullRequestsClient.cs
index 5bebb732..c1b088b7 100644
--- a/Octokit/Clients/IPullRequestsClient.cs
+++ b/Octokit/Clients/IPullRequestsClient.cs
@@ -61,5 +61,16 @@ namespace Octokit
///
///
Task Update(string owner, string name, int number, PullRequestUpdate pullRequestUpdate);
+
+ ///
+ /// Merges a pull request.
+ ///
+ /// http://developer.github.com/v3/pulls/#merge-a-pull-request-merge-buttontrade
+ /// The owner of the repository
+ /// The name of the repository
+ /// The pull request number
+ /// A instance describing a pull request merge
+ ///
+ Task Merge(string owner, string name, int number, MergePullRequest mergePullRequest);
}
}
diff --git a/Octokit/Clients/PullRequestsClient.cs b/Octokit/Clients/PullRequestsClient.cs
index 5bf55e59..e379cbba 100644
--- a/Octokit/Clients/PullRequestsClient.cs
+++ b/Octokit/Clients/PullRequestsClient.cs
@@ -95,5 +95,23 @@ namespace Octokit
return ApiConnection.Patch(ApiUrls.PullRequest(owner, name, number), pullRequestUpdate);
}
+
+ ///
+ /// Merges a pull request.
+ ///
+ /// http://developer.github.com/v3/pulls/#merge-a-pull-request-merge-buttontrade
+ /// The owner of the repository
+ /// The name of the repository
+ /// The pull request number
+ /// A instance describing a pull request merge
+ ///
+ public Task Merge(string owner, string name, int number, MergePullRequest mergePullRequest)
+ {
+ Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
+ Ensure.ArgumentNotNullOrEmptyString(name, "name");
+ Ensure.ArgumentNotNull(mergePullRequest, "mergePullRequest");
+
+ return ApiConnection.Put(ApiUrls.PullRequest(owner, name, number), mergePullRequest);
+ }
}
}
diff --git a/Octokit/Models/Request/MergePullRequest.cs b/Octokit/Models/Request/MergePullRequest.cs
new file mode 100644
index 00000000..d59e04ad
--- /dev/null
+++ b/Octokit/Models/Request/MergePullRequest.cs
@@ -0,0 +1,22 @@
+using System;
+
+namespace Octokit
+{
+ ///
+ /// Used to merge a pull request.
+ ///
+ public class MergePullRequest
+ {
+ public MergePullRequest(string message)
+ {
+ Ensure.ArgumentNotNull(message, "message");
+
+ Message = message;
+ }
+
+ ///
+ /// The message that will be used for the merge commit (optional)
+ ///
+ public string Message { get; private set; }
+ }
+}
diff --git a/Octokit/Models/Response/PullRequestMerge.cs b/Octokit/Models/Response/PullRequestMerge.cs
new file mode 100644
index 00000000..475ad974
--- /dev/null
+++ b/Octokit/Models/Response/PullRequestMerge.cs
@@ -0,0 +1,22 @@
+using System;
+
+namespace Octokit
+{
+ public class PullRequestMerge
+ {
+ ///
+ /// The sha reference of the commit.
+ ///
+ public string sha { get; set; }
+
+ ///
+ /// True if merged successfully, otherwise false.
+ ///
+ public bool Merged { get; set; }
+
+ ///
+ /// The message that will be used for the merge commit.
+ ///
+ public string Message { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj
index cc5f23f8..70cd4fd0 100644
--- a/Octokit/Octokit-Mono.csproj
+++ b/Octokit/Octokit-Mono.csproj
@@ -86,6 +86,7 @@
+
diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj
index 259d8000..89fa5bfb 100644
--- a/Octokit/Octokit-MonoAndroid.csproj
+++ b/Octokit/Octokit-MonoAndroid.csproj
@@ -113,7 +113,9 @@
+
+
diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj
index f3e15fec..23aa80e3 100644
--- a/Octokit/Octokit-Monotouch.csproj
+++ b/Octokit/Octokit-Monotouch.csproj
@@ -108,7 +108,9 @@
+
+
diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj
index bcc1af8d..92f2a2a2 100644
--- a/Octokit/Octokit.csproj
+++ b/Octokit/Octokit.csproj
@@ -136,6 +136,7 @@
+