stubbed prototype method to support comparing two commits

This commit is contained in:
Brendan Forster
2014-03-08 16:06:28 +11:00
parent afb028a2fa
commit 26127efa2f
10 changed files with 72 additions and 0 deletions
+11
View File
@@ -264,5 +264,16 @@ namespace Octokit
/// <param name="update">New values to update the repository with</param>
/// <returns>The updated <see cref="T:Octokit.Repository"/></returns>
Task<Repository> Edit(string owner, string name, RepositoryUpdate update);
/// <summary>
///
/// </summary>
/// <param name="owner"></param>
/// <param name="name"></param>
/// <param name="base"></param>
/// <param name="head"></param>
/// <returns></returns>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "base")]
Task<CompareResult> Compare(string owner, string name, string @base, string head);
}
}
+17
View File
@@ -426,5 +426,22 @@ namespace Octokit
return ApiConnection.Get<Branch>(ApiUrls.RepoBranch(owner, repositoryName, branchName));
}
/// <summary>
///
/// </summary>
/// <param name="owner"></param>
/// <param name="name"></param>
/// <param name="base"></param>
/// <param name="head"></param>
/// <returns></returns>
public Task<CompareResult> Compare(string owner, string name, string @base, string head)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "repositoryName");
Ensure.ArgumentNotNullOrEmptyString(@base, "branchName");
return ApiConnection.Get<CompareResult>(ApiUrls.RepoCompare(owner, name, @base, head));
}
}
}
+15
View File
@@ -1049,6 +1049,21 @@ namespace Octokit
return "repos/{0}/{1}/tags".FormatUri(owner, name);
}
/// <summary>
/// Returns the <see cref="Uri"/> for comparing two commits.
/// </summary>
/// <param name="owner">The owner of the repository</param>
/// <param name="repositoryName">The name of the repository</param>
/// <param name="base">The base commit</param>
/// <param name="head">The head commit</param>
/// <returns></returns>
public static Uri RepoCompare(string owner, string repositoryName, string @base, string head)
{
var encodedBase = @base.UriEncode();
var encodedHead = head.UriEncode();
return "repos/{0}/{1}/compare/{2}...{3}".FormatUri(owner, repositoryName, encodedBase, encodedHead);
}
/// <summary>
/// Returns the <see cref="Uri"/> for a repository branch.
/// </summary>
+5
View File
@@ -26,6 +26,11 @@ namespace Octokit
return new Uri(string.Format(CultureInfo.InvariantCulture, pattern, args), UriKind.Relative);
}
public static string UriEncode(this string input)
{
return System.Net.WebUtility.UrlEncode(input);
}
static readonly Regex _optionalQueryStringRegex = new Regex("\\{\\?([^}]+)\\}");
public static Uri ExpandUriTemplate(this string template, object values)
{
+19
View File
@@ -0,0 +1,19 @@
using System.Collections.Generic;
namespace Octokit
{
public class CompareResult
{
public string Url { get; set; }
public string HtmlUrl { get; set; }
public string PermalinkUrl { get; set; }
public string DiffUrl { get; set; }
public string PatchUrl { get; set; }
public Commit BaseCommit { get; set; }
public string Status { get; set; }
public int AheadBy { get; set; }
public int BehindBy { get; set; }
public int TotalCommits { get; set; }
public IReadOnlyCollection<Commit> Commits { get; set; }
}
}
+1
View File
@@ -310,6 +310,7 @@
<Compile Include="Models\Response\SearchUsersResult.cs" />
<Compile Include="Models\Response\SearchCodeResult.cs" />
<Compile Include="Models\Response\SearchIssuesResult.cs" />
<Compile Include="Models\Response\CompareResult.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
+1
View File
@@ -321,6 +321,7 @@
<Compile Include="Models\Response\SearchUsersResult.cs" />
<Compile Include="Models\Response\SearchCodeResult.cs" />
<Compile Include="Models\Response\SearchIssuesResult.cs" />
<Compile Include="Models\Response\CompareResult.cs" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />
</Project>
+1
View File
@@ -316,6 +316,7 @@
<Compile Include="Models\Response\SearchUsersResult.cs" />
<Compile Include="Models\Response\SearchCodeResult.cs" />
<Compile Include="Models\Response\SearchIssuesResult.cs" />
<Compile Include="Models\Response\CompareResult.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
+1
View File
@@ -308,6 +308,7 @@
<Compile Include="Models\Response\SearchUsersResult.cs" />
<Compile Include="Models\Response\SearchCodeResult.cs" />
<Compile Include="Models\Response\SearchIssuesResult.cs" />
<Compile Include="Models\Response\CompareResult.cs" />
</ItemGroup>
<ItemGroup>
<CodeAnalysisDictionary Include="..\CustomDictionary.xml">
+1
View File
@@ -64,6 +64,7 @@
<Compile Include="Models\Response\CommitComment.cs" />
<Compile Include="Helpers\HttpClientExtensions.cs" />
<Compile Include="Http\ProductHeaderValue.cs" />
<Compile Include="Models\Response\CompareResult.cs" />
<Compile Include="Models\Response\DeploymentStatus.cs" />
<Compile Include="Clients\DeploymentStatusClient.cs" />
<Compile Include="Clients\IDeploymentStatusClient.cs" />