diff --git a/Octokit.Reactive/Clients/IObservableGitDatabaseClient.cs b/Octokit.Reactive/Clients/IObservableGitDatabaseClient.cs new file mode 100644 index 00000000..8c984fb6 --- /dev/null +++ b/Octokit.Reactive/Clients/IObservableGitDatabaseClient.cs @@ -0,0 +1,10 @@ +namespace Octokit.Reactive +{ + /// + /// Used to maintain api structure therefore contains no methods + /// + public interface IObservableGitDatabaseClient + { + IObservableTagsClient Tag { get; set; } + } +} \ No newline at end of file diff --git a/Octokit.Reactive/Clients/ObservableGitDatabaseClient.cs b/Octokit.Reactive/Clients/ObservableGitDatabaseClient.cs new file mode 100644 index 00000000..c39ca562 --- /dev/null +++ b/Octokit.Reactive/Clients/ObservableGitDatabaseClient.cs @@ -0,0 +1,12 @@ +namespace Octokit.Reactive +{ + public class ObservableGitDatabaseClient : IObservableGitDatabaseClient + { + public ObservableGitDatabaseClient(IGitHubClient client) + { + this.Tag = new ObservableTagsClient(client); + } + + public IObservableTagsClient Tag { get; set; } + } +} \ No newline at end of file diff --git a/Octokit.Reactive/Clients/ObservableTagsClient.cs b/Octokit.Reactive/Clients/ObservableTagsClient.cs index 9c001a45..08bcf721 100644 --- a/Octokit.Reactive/Clients/ObservableTagsClient.cs +++ b/Octokit.Reactive/Clients/ObservableTagsClient.cs @@ -11,7 +11,7 @@ namespace Octokit.Reactive { Ensure.ArgumentNotNull(client, "client"); - this._client = client.Tag; + this._client = client.GitDatabase.Tag; } public IObservable Get(string owner, string name, string reference) diff --git a/Octokit.Reactive/IObservableGitHubClient.cs b/Octokit.Reactive/IObservableGitHubClient.cs index f315196b..60f6854d 100644 --- a/Octokit.Reactive/IObservableGitHubClient.cs +++ b/Octokit.Reactive/IObservableGitHubClient.cs @@ -10,5 +10,6 @@ IObservableRepositoriesClient Repository { get; } IObservableSshKeysClient SshKey { get; } IObservableUsersClient User { get; } + IObservableGitDatabaseClient GitDatabase { get; } } } \ No newline at end of file diff --git a/Octokit.Reactive/ObservableGitHubClient.cs b/Octokit.Reactive/ObservableGitHubClient.cs index ba15a9b7..290d4ee1 100644 --- a/Octokit.Reactive/ObservableGitHubClient.cs +++ b/Octokit.Reactive/ObservableGitHubClient.cs @@ -41,6 +41,7 @@ namespace Octokit.Reactive SshKey = new ObservableSshKeysClient(gitHubClient); User = new ObservableUsersClient(gitHubClient); Release = new ObservableReleasesClient(gitHubClient); + GitDatabase = new ObservableGitDatabaseClient(gitHubClient); } public IConnection Connection @@ -56,5 +57,6 @@ namespace Octokit.Reactive public IObservableReleasesClient Release { get; private set; } public IObservableSshKeysClient SshKey { get; private set; } public IObservableUsersClient User { get; private set; } + public IObservableGitDatabaseClient GitDatabase { get; private set; } } } diff --git a/Octokit.Reactive/Octokit.Reactive.csproj b/Octokit.Reactive/Octokit.Reactive.csproj index a75729f7..6cbfd9be 100644 --- a/Octokit.Reactive/Octokit.Reactive.csproj +++ b/Octokit.Reactive/Octokit.Reactive.csproj @@ -71,6 +71,8 @@ Properties\SolutionInfo.cs + + diff --git a/Octokit.Tests/Clients/GitDatabaseClientTests.cs b/Octokit.Tests/Clients/GitDatabaseClientTests.cs new file mode 100644 index 00000000..e51924b0 --- /dev/null +++ b/Octokit.Tests/Clients/GitDatabaseClientTests.cs @@ -0,0 +1,24 @@ +using System; +using NSubstitute; +using Octokit; +using Xunit; + +public class GitDatabaseClientTests +{ + public class TheCtor + { + [Fact] + public void EnsuresArgument() + { + Assert.Throws(() => new GitDatabaseClient(null)); + } + + [Fact] + public void SetChildClients() + { + var apiConnection = Substitute.For(); + var gitDatabaseClient = new GitDatabaseClient(apiConnection); + Assert.NotNull(gitDatabaseClient.Tag); + } + } +} \ No newline at end of file diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj index 974ad4f2..3b8383c9 100644 --- a/Octokit.Tests/Octokit.Tests.csproj +++ b/Octokit.Tests/Octokit.Tests.csproj @@ -62,6 +62,7 @@ + diff --git a/Octokit/Clients/GitDatabaseClient.cs b/Octokit/Clients/GitDatabaseClient.cs new file mode 100644 index 00000000..e55a82f2 --- /dev/null +++ b/Octokit/Clients/GitDatabaseClient.cs @@ -0,0 +1,13 @@ +namespace Octokit +{ + public class GitDatabaseClient : ApiClient, IGitDatabaseClient + { + public GitDatabaseClient(IApiConnection apiConnection) + : base(apiConnection) + { + this.Tag = new TagsClient(apiConnection); + } + + public ITagsClient Tag { get; set; } + } +} \ No newline at end of file diff --git a/Octokit/Clients/IGitDatabaseClient.cs b/Octokit/Clients/IGitDatabaseClient.cs new file mode 100644 index 00000000..6bd46eb4 --- /dev/null +++ b/Octokit/Clients/IGitDatabaseClient.cs @@ -0,0 +1,10 @@ +namespace Octokit +{ + /// + /// Used to maintain api structure therefore contains no methods + /// + public interface IGitDatabaseClient + { + ITagsClient Tag { get; set; } + } +} \ No newline at end of file diff --git a/Octokit/GitHubClient.cs b/Octokit/GitHubClient.cs index 23d92402..42bcfb5b 100644 --- a/Octokit/GitHubClient.cs +++ b/Octokit/GitHubClient.cs @@ -88,7 +88,7 @@ namespace Octokit Release = new ReleasesClient(apiConnection); User = new UsersClient(apiConnection); SshKey = new SshKeysClient(apiConnection); - Tag = new TagsClient(apiConnection); + GitDatabase = new GitDatabaseClient(apiConnection); } /// @@ -134,7 +134,7 @@ namespace Octokit public ISshKeysClient SshKey { get; private set; } public IUsersClient User { get; private set; } public INotificationsClient Notification { get; private set; } - public ITagsClient Tag { get; private set; } + public IGitDatabaseClient GitDatabase { get; private set; } static Uri FixUpBaseUri(Uri uri) { diff --git a/Octokit/IGitHubClient.cs b/Octokit/IGitHubClient.cs index c5ef775d..f9f5032b 100644 --- a/Octokit/IGitHubClient.cs +++ b/Octokit/IGitHubClient.cs @@ -15,6 +15,6 @@ namespace Octokit ISshKeysClient SshKey { get; } IUsersClient User { get; } INotificationsClient Notification { get; } - ITagsClient Tag { get; } + IGitDatabaseClient GitDatabase { get; } } } diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 4802ce28..ef3c99f4 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -49,9 +49,11 @@ + + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index a1823e33..a00eec68 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -52,7 +52,9 @@ + +