Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Repository invitations changes #1410

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
dcf1cf0
Merge remote-tracking branch 'refs/remotes/octokit/master'
martinscholz83 Jun 28, 2016
61dfff8
Merge remote-tracking branch 'refs/remotes/octokit/master'
martinscholz83 Jun 29, 2016
dc65dab
Merge remote-tracking branch 'refs/remotes/octokit/master'
martinscholz83 Jun 30, 2016
f6191d2
Merge branch 'master' of https://github.com/maddin2016/octokit.net
martinscholz83 Jun 30, 2016
7bd3b37
add invitations accept header
martinscholz83 Jun 30, 2016
9f9c5e0
create class RepositoryInvitation
martinscholz83 Jun 30, 2016
dcdfbc6
add repository invitations client
martinscholz83 Jun 30, 2016
f8e7899
add api urls for invitations
martinscholz83 Jun 30, 2016
6fbfa0e
[WIP]
martinscholz83 Jun 30, 2016
58d90c1
add methods to repository invitations client
martinscholz83 Jun 30, 2016
0a67ae0
add invite method to repo collaborators client
martinscholz83 Jun 30, 2016
9471562
some changes
martinscholz83 Jun 30, 2016
ae8e60f
Merge remote-tracking branch 'refs/remotes/octokit/master' into repos…
martinscholz83 Jul 1, 2016
e5d5f3c
Merge branch 'repository-invitations-changes' of https://github.com/m…
martinscholz83 Jul 1, 2016
a0eb6db
add observable client
martinscholz83 Jul 1, 2016
abc4b08
add dependings
martinscholz83 Jul 1, 2016
cd95700
add missing observable client
martinscholz83 Jul 1, 2016
aba8653
add missing xml params
martinscholz83 Jul 1, 2016
eb79e6a
check client
martinscholz83 Jul 1, 2016
a1b0fcb
change repository invitation model
martinscholz83 Jul 1, 2016
721ab95
[WIP] tests
martinscholz83 Jul 1, 2016
6727c4e
[WIP] tests; fix overloads for client
martinscholz83 Jul 1, 2016
ffa5999
change GetAllForCurrent; suppress message
martinscholz83 Jul 1, 2016
e81dde8
some more tests
martinscholz83 Jul 1, 2016
7b7d60e
[WIP]
martinscholz83 Jul 3, 2016
525dcfb
Merge remote-tracking branch 'refs/remotes/octokit/master' into repos…
martinscholz83 Jul 3, 2016
29b6f07
[WIP]
martinscholz83 Jul 3, 2016
24920c9
add collaborator request model
martinscholz83 Jul 4, 2016
3eb7bd4
change return types
martinscholz83 Jul 4, 2016
e65d596
add some more tests
martinscholz83 Jul 4, 2016
7536d96
fix xml doc
martinscholz83 Jul 4, 2016
7451528
check for null arguments
martinscholz83 Jul 4, 2016
7d8e520
fix tests
martinscholz83 Jul 4, 2016
1566f69
some fixes from @ryangribble
martinscholz83 Jul 4, 2016
a21b3a1
add parameterless constructor for RepositoryInvitation
martinscholz83 Jul 5, 2016
8d98235
change setter
martinscholz83 Jul 5, 2016
8531347
change constructor
martinscholz83 Jul 5, 2016
e7b9f8a
Merge remote-tracking branch 'refs/remotes/octokit/master' into repos…
martinscholz83 Jul 6, 2016
f3d0c03
fix merge conflicts
martinscholz83 Jul 6, 2016
69f4e07
[WIP] RepositoryInvitationsClientTests
martinscholz83 Jul 7, 2016
bc145aa
Merge remote-tracking branch 'refs/remotes/octokit/master' into repos…
martinscholz83 Jul 8, 2016
16df43e
fix api url xml
martinscholz83 Jul 8, 2016
d841119
change collaborator request constructor
martinscholz83 Jul 8, 2016
48d8153
change unit tests for collaborator request
martinscholz83 Jul 8, 2016
89e76e3
change repocollaboratorsclient
martinscholz83 Jul 8, 2016
864498d
[WIP] integration tests
martinscholz83 Jul 8, 2016
ee15ec4
add methods for interface
martinscholz83 Jul 9, 2016
e661ad1
NotFoundExceptions
martinscholz83 Jul 10, 2016
fad4495
add overload for invite method
martinscholz83 Jul 10, 2016
479e350
rename repo property
martinscholz83 Jul 10, 2016
a299fc3
gramar
martinscholz83 Jul 11, 2016
7727f06
overloads for observable repo collaborators client
martinscholz83 Jul 11, 2016
515a834
Merge remote-tracking branch 'refs/remotes/octokit/master' into repos…
martinscholz83 Jul 15, 2016
40e36fc
change integration tests
martinscholz83 Jul 15, 2016
5a36c72
new integration tests
martinscholz83 Jul 16, 2016
a3fd4fd
Merge remote-tracking branch 'refs/remotes/octokit/master' into repos…
martinscholz83 Jul 19, 2016
0ec91bd
add decline test
martinscholz83 Jul 20, 2016
acd0f33
add test for accept invitation
martinscholz83 Jul 21, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 72 additions & 1 deletion Octokit.Reactive/Clients/IObservableRepoCollaboratorsClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,19 @@ public interface IObservableRepoCollaboratorsClient
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<Unit> Add(string owner, string name, string user);

/// <summary>
/// Adds a new collaborator to the repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#list">API documentation</a> for more information.
/// </remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="user">Username of the new collaborator</param>
/// <param name="permission">The permission to set. Only valid on organization-owned repositories.</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<bool> Add(string owner, string name, string user, CollaboratorRequest permission);

/// <summary>
/// Adds a new collaborator to the repository.
/// </summary>
Expand All @@ -101,6 +114,64 @@ public interface IObservableRepoCollaboratorsClient
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<Unit> Add(int repositoryId, string user);

/// <summary>
/// Adds a new collaborator to the repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#add-collaborator">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository</param>
/// <param name="user">Username of the new collaborator</param>
/// <param name="permission">The permission to set. Only valid on organization-owned repositories.</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<bool> Add(int repositoryId, string user, CollaboratorRequest permission);

/// <summary>
/// Invites a user as a collaborator to a repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#add-collaborator">API documentation</a> for more information.
/// </remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="user">The username of the prospective collaborator</param>
IObservable<RepositoryInvitation> Invite(string owner, string name, string user);

/// <summary>
/// Invites a user as a collaborator to a repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#add-collaborator">API documentation</a> for more information.
/// </remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="user">The username of the prospective collaborator</param>
/// <param name="permission">The permission to set. Only valid on organization-owned repositories.</param>
IObservable<RepositoryInvitation> Invite(string owner, string name, string user, CollaboratorRequest permission);

/// <summary>
/// Adds a new collaborator to the repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#add-collaborator">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository</param>
/// <param name="user">Username of the new collaborator</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<RepositoryInvitation> Invite(int repositoryId, string user);

/// <summary>
/// Invites a user as a collaborator to a repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#add-collaborator">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository</param>
/// <param name="user">Username of the new collaborator</param>
/// <param name="permission">The permission to set. Only valid on organization-owned repositories.</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<RepositoryInvitation> Invite(int repositoryId, string user, CollaboratorRequest permission);

/// <summary>
/// Deletes a collaborator from the repository.
/// </summary>
Expand All @@ -124,4 +195,4 @@ public interface IObservableRepoCollaboratorsClient
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<Unit> Delete(int repositoryId, string user);
}
}
}
9 changes: 9 additions & 0 deletions Octokit.Reactive/Clients/IObservableRepositoriesClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -559,12 +559,21 @@ public interface IObservableRepositoriesClient
/// See the <a href="https://developer.github.com/v3/repos/keys/">Repository Deploy Keys API documentation</a> for more information.
/// </remarks>
IObservableRepositoryDeployKeysClient DeployKeys { get; }

/// <summary>
/// A client for GitHub's Repository Pages API.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/pages/">Repository Pages API documentation</a> for more information.
/// </remarks>
IObservableRepositoryPagesClient Page { get; }

/// <summary>
/// A client for GitHub's Repository Invitations API.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/invitations/">Repository Invitations API documentation</a> for more information.
/// </remarks>
IObservableRepositoryInvitationsClient Invitation { get; }
}
}
67 changes: 67 additions & 0 deletions Octokit.Reactive/Clients/IObservableRepositoryInvitationsClient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Collections.Generic;

namespace Octokit.Reactive
{
public interface IObservableRepositoryInvitationsClient
{
/// <summary>
/// Accept a repository invitation.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/invitations/#accept-a-repository-invitation">API documentation</a> for more information.
/// </remarks>
/// <param name="invitationId">The id of the invitation.</param>
IObservable<bool> Accept(int invitationId);

/// <summary>
/// Decline a repository invitation.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/invitations/#decline-a-repository-invitation">API documentation</a> for more information.
/// </remarks>
/// <param name="invitationId">The id of the invitation.</param>
IObservable<bool> Decline(int invitationId);

/// <summary>
/// Deletes a repository invitation.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/invitations/#delete-a-repository-invitation">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository.</param>
/// <param name="invitationId">The id of the invitation.</param>
IObservable<bool> Delete(int repositoryId, int invitationId);

/// <summary>
/// Gets all invitations for the current user.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/invitations/#list-a-users-repository-invitations">API documentation</a> for more information.
/// </remarks>
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
IObservable<RepositoryInvitation> GetAllForCurrent();

/// <summary>
/// Gets all the invitations on a repository.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/invitations/#list-invitations-for-a-repository">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository</param>
IObservable<RepositoryInvitation> GetAllForRepository(int repositoryId);

/// <summary>
/// Updates a repository invitation.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/invitations/#update-a-repository-invitation">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository.</param>
/// <param name="invitationId">The id of the invitation.</param>
/// <param name="permissions">The permission to set.</param>
/// <returns><see cref="RepositoryInvitation"/></returns>
IObservable<RepositoryInvitation> Edit(int repositoryId, int invitationId, InvitationUpdate permissions);
}
}
116 changes: 113 additions & 3 deletions Octokit.Reactive/Clients/ObservableRepoCollaboratorsClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public IObservable<User> GetAll(string owner, string name, ApiOptions options)
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNull(options, "options");

return _connection.GetAndFlattenAllPages<User>(ApiUrls.RepoCollaborators(owner, name), options);
}

Expand Down Expand Up @@ -132,7 +132,7 @@ public IObservable<bool> IsCollaborator(int repositoryId, string user)
/// Adds a new collaborator to the repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#list">API documentation</a> for more information.
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#add-collaborator">API documentation</a> for more information.
/// </remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
Expand All @@ -147,6 +147,27 @@ public IObservable<Unit> Add(string owner, string name, string user)
return _client.Add(owner, name, user).ToObservable();
}

/// <summary>
/// Adds a new collaborator to the repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#add-collaborator">API documentation</a> for more information.
/// </remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="user">Username of the new collaborator</param>
/// <param name="permission">The permission to set. Only valid on organization-owned repositories.</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<bool> Add(string owner, string name, string user, CollaboratorRequest permission)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNullOrEmptyString(user, "user");
Ensure.ArgumentNotNull(permission, "permission");

return _client.Add(owner, name, user, permission).ToObservable();
}

/// <summary>
/// Adds a new collaborator to the repository.
/// </summary>
Expand All @@ -163,6 +184,95 @@ public IObservable<Unit> Add(int repositoryId, string user)
return _client.Add(repositoryId, user).ToObservable();
}

/// <summary>
/// Adds a new collaborator to the repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#list">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository</param>
/// <param name="user">Username of the new collaborator</param>
/// <param name="permission">The permission to set. Only valid on organization-owned repositories.</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<bool> Add(int repositoryId, string user, CollaboratorRequest permission)
{
Ensure.ArgumentNotNullOrEmptyString(user, "user");
Ensure.ArgumentNotNull(permission, "permission");

return _client.Add(repositoryId, user, permission).ToObservable();
}

/// <summary>
/// Invites a user as a collaborator to a repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#list">API documentation</a> for more information.
/// </remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="user">The username of the prospective collaborator</param>
public IObservable<RepositoryInvitation> Invite(string owner, string name, string user)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNullOrEmptyString(user, "user");

return _client.Invite(owner, name, user).ToObservable();
}

/// <summary>
/// Invites a user as a collaborator to a repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#list">API documentation</a> for more information.
/// </remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="user">The username of the prospective collaborator</param>
/// <param name="permission">The permission to set. Only valid on organization-owned repositories.</param>
public IObservable<RepositoryInvitation> Invite(string owner, string name, string user, CollaboratorRequest permission)
{
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(name, "name");
Ensure.ArgumentNotNullOrEmptyString(user, "user");
Ensure.ArgumentNotNull(permission, "psermission");

return _client.Invite(owner, name, user, permission).ToObservable();
}

/// <summary>
/// Invites a user as a collaborator to a repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#list">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository</param>
/// <param name="user">The username of the prospective collaborator</param>

public IObservable<RepositoryInvitation> Invite(int repositoryId, string user)
{
Ensure.ArgumentNotNullOrEmptyString(user, "user");

return _client.Invite(repositoryId, user).ToObservable();
}

/// <summary>
/// Invites a user as a collaborator to a repository.
/// </summary>
/// <remarks>
/// See the <a href="http://developer.github.com/v3/repos/collaborators/#list">API documentation</a> for more information.
/// </remarks>
/// <param name="repositoryId">The id of the repository</param>
/// <param name="user">The username of the prospective collaborator</param>
/// <param name="permission">The permission to set. Only valid on organization-owned repositories.</param>
public IObservable<RepositoryInvitation> Invite(int repositoryId, string user, CollaboratorRequest permission)
{
Ensure.ArgumentNotNullOrEmptyString(user, "user");
Ensure.ArgumentNotNull(permission, "psermission");

return _client.Invite(repositoryId, user, permission).ToObservable();
}

/// <summary>
/// Deletes a collaborator from the repository.
/// </summary>
Expand Down Expand Up @@ -198,4 +308,4 @@ public IObservable<Unit> Delete(int repositoryId, string user)
return _client.Delete(repositoryId, user).ToObservable();
}
}
}
}
9 changes: 9 additions & 0 deletions Octokit.Reactive/Clients/ObservableRepositoriesClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public ObservableRepositoriesClient(IGitHubClient client)
Content = new ObservableRepositoryContentsClient(client);
Merging = new ObservableMergingClient(client);
Page = new ObservableRepositoryPagesClient(client);
Invitation = new ObservableRepositoryInvitationsClient(client);
}

/// <summary>
Expand Down Expand Up @@ -853,5 +854,13 @@ public IObservable<CompareResult> Compare(string owner, string name, string @bas
/// See the <a href="https://developer.github.com/v3/repos/pages/">Repository Pages API documentation</a> for more information.
/// </remarks>
public IObservableRepositoryPagesClient Page { get; private set; }

/// <summary>
/// A client for GitHub's Repository Invitations API.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/repos/invitations/">Repository Invitations API documentation</a> for more information.
/// </remarks>
public IObservableRepositoryInvitationsClient Invitation { get; private set; }
}
}
Loading