using System.Collections.Generic; using System.Threading.Tasks; namespace Octokit { /// /// A client for GitHub's Repository Forks API. /// /// /// See the Forks API documentation for more information. /// public class RepositoryForksClient : ApiClient, IRepositoryForksClient { /// /// Initializes a new GitHub Repos Fork API client. /// /// An API connection. public RepositoryForksClient(IApiConnection apiConnection) : base(apiConnection) { } /// /// Gets the list of forks defined for a repository /// /// /// See API documentation for more information. /// /// The owner of the repository /// The name of the repository [ManualRoute("GET", "/repos/{owner}/{repo}/forks")] public Task> GetAll(string owner, string name) { Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner)); Ensure.ArgumentNotNullOrEmptyString(name, nameof(name)); return GetAll(owner, name, ApiOptions.None); } /// /// Gets the list of forks defined for a repository /// /// /// See API documentation for more information. /// /// The Id of the repository [ManualRoute("GET", "/repositories/{id}/forks")] public Task> GetAll(long repositoryId) { return GetAll(repositoryId, ApiOptions.None); } /// /// Gets the list of forks defined for a repository /// /// /// See API documentation for more information. /// /// The owner of the repository /// The name of the repository /// Options for changing the API response [ManualRoute("GET", "/repos/{owner}/{repo}/forks")] public Task> GetAll(string owner, string name, ApiOptions options) { Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner)); Ensure.ArgumentNotNullOrEmptyString(name, nameof(name)); Ensure.ArgumentNotNull(options, nameof(options)); return ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, name), options); } /// /// Gets the list of forks defined for a repository /// /// /// See API documentation for more information. /// /// The Id of the repository /// Options for changing the API response [ManualRoute("GET", "/repositories/{id}/forks")] public Task> GetAll(long repositoryId, ApiOptions options) { Ensure.ArgumentNotNull(options, nameof(options)); return ApiConnection.GetAll(ApiUrls.RepositoryForks(repositoryId), options); } /// /// Gets the list of forks defined for a repository /// /// /// See API documentation for more information. /// /// The owner of the repository /// The name of the repository /// Used to request and filter a list of repository forks [ManualRoute("GET", "/repos/{owner}/{repo}/forks")] public Task> GetAll(string owner, string name, RepositoryForksListRequest request) { Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner)); Ensure.ArgumentNotNullOrEmptyString(name, nameof(name)); Ensure.ArgumentNotNull(request, nameof(request)); return GetAll(owner, name, request, ApiOptions.None); } /// /// Gets the list of forks defined for a repository /// /// /// See API documentation for more information. /// /// The Id of the repository /// Used to request and filter a list of repository forks [ManualRoute("GET", "/repositories/{id}/forks")] public Task> GetAll(long repositoryId, RepositoryForksListRequest request) { Ensure.ArgumentNotNull(request, nameof(request)); return GetAll(repositoryId, request, ApiOptions.None); } /// /// Gets the list of forks defined for a repository /// /// /// See API documentation for more information. /// /// The owner of the repository /// The name of the repository /// Used to request and filter a list of repository forks /// Options for changing the API response [ManualRoute("GET", "/repos/{owner}/{repo}/forks")] public Task> GetAll(string owner, string name, RepositoryForksListRequest request, ApiOptions options) { Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner)); Ensure.ArgumentNotNullOrEmptyString(name, nameof(name)); Ensure.ArgumentNotNull(request, nameof(request)); Ensure.ArgumentNotNull(options, nameof(options)); return ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, name), request.ToParametersDictionary(), options); } /// /// Gets the list of forks defined for a repository /// /// /// See API documentation for more information. /// /// The Id of the repository /// Used to request and filter a list of repository forks /// Options for changing the API response [ManualRoute("GET", "/repositories/{id}/forks")] public Task> GetAll(long repositoryId, RepositoryForksListRequest request, ApiOptions options) { Ensure.ArgumentNotNull(request, nameof(request)); Ensure.ArgumentNotNull(options, nameof(options)); return ApiConnection.GetAll(ApiUrls.RepositoryForks(repositoryId), request.ToParametersDictionary(), options); } /// /// Creates a fork for a repository. Specify organization in the fork parameter to create for an organization. /// /// /// See API documentation for more information. /// /// The owner of the repository /// The name of the repository /// Used to fork a repository [Preview("mercy")] [ManualRoute("POST", "/repos/{owner}/{repo}/forks")] public Task Create(string owner, string name, NewRepositoryFork fork) { Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner)); Ensure.ArgumentNotNullOrEmptyString(name, nameof(name)); Ensure.ArgumentNotNull(fork, nameof(fork)); return ApiConnection.Post(ApiUrls.RepositoryForks(owner, name), fork); } /// /// Creates a fork for a repository. Specify organization in the fork parameter to create for an organization. /// /// /// See API documentation for more information. /// /// The Id of the repository /// Used to fork a repository [Preview("mercy")] [ManualRoute("POST", "/repositories/{id}/forks")] public Task Create(long repositoryId, NewRepositoryFork fork) { Ensure.ArgumentNotNull(fork, nameof(fork)); return ApiConnection.Post(ApiUrls.RepositoryForks(repositoryId), fork); } } }