From 10cea07daf392c8b3ec7bbfc9b33c05070388379 Mon Sep 17 00:00:00 2001 From: maddin2016 Date: Mon, 6 Jun 2016 10:16:30 +0200 Subject: [PATCH] add TeamRepositoryUpdate model --- Octokit/Clients/ITeamsClient.cs | 8 ++++ Octokit/Clients/TeamsClient.cs | 18 ++++++++ .../Models/Request/TeamRepositoryUpdate.cs | 42 +++++++++++++++++++ Octokit/Octokit-Mono.csproj | 1 + Octokit/Octokit-MonoAndroid.csproj | 1 + Octokit/Octokit-Monotouch.csproj | 1 + Octokit/Octokit-Portable.csproj | 1 + Octokit/Octokit-netcore45.csproj | 1 + Octokit/Octokit.csproj | 1 + 9 files changed, 74 insertions(+) create mode 100644 Octokit/Models/Request/TeamRepositoryUpdate.cs diff --git a/Octokit/Clients/ITeamsClient.cs b/Octokit/Clients/ITeamsClient.cs index 4249acaf..e4699ce9 100644 --- a/Octokit/Clients/ITeamsClient.cs +++ b/Octokit/Clients/ITeamsClient.cs @@ -159,6 +159,14 @@ namespace Octokit /// Task AddRepository(int id, string organization, string repoName); + /// + /// Add a repository to the team + /// + /// The permission to grant the team on this repository + /// Thrown when a general API error occurs. + /// + Task AddRepository(int id, string organization, string repoName, PermissionType permission); + /// /// Remove a repository from the team /// diff --git a/Octokit/Clients/TeamsClient.cs b/Octokit/Clients/TeamsClient.cs index 3ec477ac..cc267bc3 100644 --- a/Octokit/Clients/TeamsClient.cs +++ b/Octokit/Clients/TeamsClient.cs @@ -317,6 +317,24 @@ namespace Octokit } } + public async Task AddRepository(int id, string organization, string repoName, PermissionType permission) + { + Ensure.ArgumentNotNullOrEmptyString(organization, "organization"); + Ensure.ArgumentNotNullOrEmptyString(repoName, "repoName"); + + var endpoint = ApiUrls.TeamRepository(id, organization, repoName); + + try + { + var httpStatusCode = await ApiConnection.Connection.Put(endpoint).ConfigureAwait(false); + return httpStatusCode == HttpStatusCode.NoContent; + } + catch (NotFoundException) + { + return false; + } + } + /// /// Remove a repository from the team /// diff --git a/Octokit/Models/Request/TeamRepositoryUpdate.cs b/Octokit/Models/Request/TeamRepositoryUpdate.cs new file mode 100644 index 00000000..1106572f --- /dev/null +++ b/Octokit/Models/Request/TeamRepositoryUpdate.cs @@ -0,0 +1,42 @@ +using Octokit.Internal; +using System.Diagnostics; +using System.Globalization; + +namespace Octokit +{ + public enum PermissionType + { + [Parameter(Value = "pull")] + Pull, + [Parameter(Value = "push")] + Push, + [Parameter(Value = "admin")] + Admin + } + + [DebuggerDisplay("{DebuggerDisplay,nq}")] + public class TeamRepositoryUpdate + { + /// + /// Used to add or update a team repository. + /// + public TeamRepositoryUpdate(PermissionType permission) + { + Permission = permission; + } + + /// + /// The permission to grant the team on this repository. + /// + [Parameter(Key = "permission")] + public PermissionType Permission { get; private set; } + + internal string DebuggerDisplay + { + get + { + return string.Format(CultureInfo.InvariantCulture, "Permission: {}", Permission); + } + } + } +} diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index 2370eca2..a2638bab 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -466,6 +466,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index f7fadcd7..b4a0a293 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -477,6 +477,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index d99d3979..50fdde6d 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -473,6 +473,7 @@ + diff --git a/Octokit/Octokit-Portable.csproj b/Octokit/Octokit-Portable.csproj index 4c2c1574..44aa78eb 100644 --- a/Octokit/Octokit-Portable.csproj +++ b/Octokit/Octokit-Portable.csproj @@ -463,6 +463,7 @@ + diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 841d4088..c459ed44 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -470,6 +470,7 @@ + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index 2f5bac29..afd1dc39 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -144,6 +144,7 @@ +