diff --git a/Octokit.Reactive/Clients/IObservableReleasesClient.cs b/Octokit.Reactive/Clients/IObservableReleasesClient.cs index 0df743d4..82fd46f5 100644 --- a/Octokit.Reactive/Clients/IObservableReleasesClient.cs +++ b/Octokit.Reactive/Clients/IObservableReleasesClient.cs @@ -43,7 +43,7 @@ namespace Octokit.Reactive /// A description of the release to create /// Thrown when a general API error occurs. /// The created . - IObservable Create(string owner, string name, ReleaseUpdate data); + IObservable Create(string owner, string name, NewRelease data); /// /// Edits an existing for the specified repository. diff --git a/Octokit.Reactive/Clients/ObservableReleasesClient.cs b/Octokit.Reactive/Clients/ObservableReleasesClient.cs index de30db4f..d1809999 100644 --- a/Octokit.Reactive/Clients/ObservableReleasesClient.cs +++ b/Octokit.Reactive/Clients/ObservableReleasesClient.cs @@ -66,7 +66,7 @@ namespace Octokit.Reactive /// A description of the release to create /// Thrown when a general API error occurs. /// The created . - public IObservable Create(string owner, string name, ReleaseUpdate data) + public IObservable Create(string owner, string name, NewRelease data) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "name"); diff --git a/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs b/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs index 4e087057..bc1e7c3a 100644 --- a/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs +++ b/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs @@ -43,7 +43,7 @@ public class ReleasesClientTests public async Task ReturnsReleasesWithNullPublishDate() { // create a release without a publish date - var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; + var releaseWithNoUpdate = new NewRelease("0.1") { Draft = true }; await _releaseClient.Create(_repositoryOwner, _repositoryName, releaseWithNoUpdate); var releases = await _releaseClient.GetAll(_repositoryOwner, _repositoryName); @@ -83,7 +83,7 @@ public class ReleasesClientTests [IntegrationTest] public async Task CanChangeBodyOfRelease() { - var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; + var releaseWithNoUpdate = new NewRelease("0.1") { Draft = true }; var release = await _releaseClient.Create(_repositoryOwner, _repositoryName, releaseWithNoUpdate); var editRelease = release.ToUpdate(); @@ -101,7 +101,7 @@ public class ReleasesClientTests [IntegrationTest] public async Task CanChangeCommitIshOfRelease() { - var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; + var releaseWithNoUpdate = new NewRelease("0.1") { Draft = true }; var release = await _releaseClient.Create(_repositoryOwner, _repositoryName, releaseWithNoUpdate); Assert.Equal("master", release.TargetCommitish); @@ -150,7 +150,7 @@ public class ReleasesClientTests [IntegrationTest] public async Task CanUploadAndRetrieveAnAsset() { - var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; + var releaseWithNoUpdate = new NewRelease("0.1") { Draft = true }; var release = await _releaseClient.Create(_repositoryOwner, _repositoryName, releaseWithNoUpdate); var stream = Helper.LoadFixture("hello-world.txt"); @@ -175,7 +175,7 @@ public class ReleasesClientTests [IntegrationTest] public async Task CanEditAnAssetLabel() { - var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; + var releaseWithNoUpdate = new NewRelease("0.1") { Draft = true }; var release = await _releaseClient.Create(_repositoryOwner, _repositoryName, releaseWithNoUpdate); var stream = Helper.LoadFixture("hello-world.txt"); @@ -201,7 +201,7 @@ public class ReleasesClientTests [IntegrationTest] public async Task CanDownloadAnAsset() { - var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; + var releaseWithNoUpdate = new NewRelease("0.1") { Draft = true }; var release = await _releaseClient.Create(_repositoryOwner, _repositoryName, releaseWithNoUpdate); var stream = Helper.LoadFixture("hello-world.txt"); diff --git a/Octokit.Tests/Clients/ReleasesClientTests.cs b/Octokit.Tests/Clients/ReleasesClientTests.cs index da58eb4a..11e026df 100644 --- a/Octokit.Tests/Clients/ReleasesClientTests.cs +++ b/Octokit.Tests/Clients/ReleasesClientTests.cs @@ -67,7 +67,7 @@ namespace Octokit.Tests.Clients { var client = Substitute.For(); var releasesClient = new ReleasesClient(client); - var data = new ReleaseUpdate("fake-tag"); + var data = new NewRelease("fake-tag"); releasesClient.Create("fake", "repo", data); @@ -80,9 +80,9 @@ namespace Octokit.Tests.Clients public async Task EnsuresArgumentsNotNull() { var releasesClient = new ReleasesClient(Substitute.For()); - var data = new ReleaseUpdate("fake-tag"); + var data = new NewRelease("fake-tag"); - Assert.Throws(() => new ReleaseUpdate(null)); + Assert.Throws(() => new NewRelease(null)); await AssertEx.Throws(async () => await releasesClient.Create(null, "name", data)); await AssertEx.Throws(async () => @@ -99,7 +99,7 @@ namespace Octokit.Tests.Clients { var connection = Substitute.For(); var releasesClient = new ReleasesClient(connection); - var data = new ReleaseUpdate("fake-tag"); + var data = new ReleaseUpdate { TagName = "fake-tag" }; releasesClient.Edit("fake", "repo", 1, data); @@ -110,11 +110,12 @@ namespace Octokit.Tests.Clients public void EnsuresNonNullArguments() { var releasesClient = new ReleasesClient(Substitute.For()); + var releaseUpdate = new ReleaseUpdate { TagName = "tag" }; - Assert.Throws(() => releasesClient.Edit(null, "name", 1, new ReleaseUpdate("tag"))); - Assert.Throws(() => releasesClient.Edit("", "name", 1, new ReleaseUpdate("tag"))); - Assert.Throws(() => releasesClient.Edit("owner", null, 1, new ReleaseUpdate("tag"))); - Assert.Throws(() => releasesClient.Edit("owner", "", 1, new ReleaseUpdate("tag"))); + Assert.Throws(() => releasesClient.Edit(null, "name", 1, releaseUpdate)); + Assert.Throws(() => releasesClient.Edit("", "name", 1, releaseUpdate)); + Assert.Throws(() => releasesClient.Edit("owner", null, 1, releaseUpdate)); + Assert.Throws(() => releasesClient.Edit("owner", "", 1, releaseUpdate)); Assert.Throws(() => releasesClient.Edit("owner", "name", 1, null)); } } diff --git a/Octokit.Tests/Reactive/ObservableReleasesClientTests.cs b/Octokit.Tests/Reactive/ObservableReleasesClientTests.cs index a3fec67f..e43f6445 100644 --- a/Octokit.Tests/Reactive/ObservableReleasesClientTests.cs +++ b/Octokit.Tests/Reactive/ObservableReleasesClientTests.cs @@ -74,7 +74,7 @@ namespace Octokit.Tests.Reactive { var gitHubClient = Substitute.For(); var releasesClient = new ObservableReleasesClient(gitHubClient); - var data = new ReleaseUpdate("fake-tag"); + var data = new NewRelease("fake-tag"); releasesClient.Create("fake", "repo", data); @@ -85,9 +85,9 @@ namespace Octokit.Tests.Reactive public void EnsuresArgumentsNotNull() { var releasesClient = new ObservableReleasesClient(Substitute.For()); - var data = new ReleaseUpdate("fake-tag"); + var data = new NewRelease("fake-tag"); - Assert.Throws(() => new ReleaseUpdate(null)); + Assert.Throws(() => new NewRelease(null)); Assert.Throws(() => releasesClient.Create(null, "name", data)); Assert.Throws(() => releasesClient.Create("owner", null, data)); Assert.Throws(() => releasesClient.Create("owner", "name", null)); @@ -101,7 +101,7 @@ namespace Octokit.Tests.Reactive { var gitHubClient = Substitute.For(); var releasesClient = new ObservableReleasesClient(gitHubClient); - var data = new ReleaseUpdate("fake-tag"); + var data = new ReleaseUpdate { TagName = "fake-tag" }; releasesClient.Edit("fake", "repo", 1, data); @@ -112,7 +112,7 @@ namespace Octokit.Tests.Reactive public void EnsuresNonNullArguments() { var releasesClient = new ObservableReleasesClient(Substitute.For()); - var update = new ReleaseUpdate("tag"); + var update = new ReleaseUpdate { TagName = "tag" }; Assert.Throws(() => releasesClient.Edit(null, "name", 1, update)); Assert.Throws(() => releasesClient.Edit("", "name", 1, update)); diff --git a/Octokit/Clients/IReleasesClient.cs b/Octokit/Clients/IReleasesClient.cs index 61fd26c9..bfbbc96c 100644 --- a/Octokit/Clients/IReleasesClient.cs +++ b/Octokit/Clients/IReleasesClient.cs @@ -51,7 +51,7 @@ namespace Octokit /// A description of the release to create /// Thrown when a general API error occurs. /// The created . - Task Create(string owner, string name, ReleaseUpdate data); + Task Create(string owner, string name, NewRelease data); /// /// Edits an existing for the specified repository. diff --git a/Octokit/Clients/ReleasesClient.cs b/Octokit/Clients/ReleasesClient.cs index 96f39581..56feb7a0 100644 --- a/Octokit/Clients/ReleasesClient.cs +++ b/Octokit/Clients/ReleasesClient.cs @@ -71,7 +71,7 @@ namespace Octokit /// A description of the release to create /// Thrown when a general API error occurs. /// The created . - public Task Create(string owner, string name, ReleaseUpdate data) + public Task Create(string owner, string name, NewRelease data) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "repository"); diff --git a/Octokit/Models/Request/GistUpdate.cs b/Octokit/Models/Request/GistUpdate.cs index c16fc488..3462f26a 100644 --- a/Octokit/Models/Request/GistUpdate.cs +++ b/Octokit/Models/Request/GistUpdate.cs @@ -14,6 +14,14 @@ namespace Octokit } public string Description { get; set; } + + /// + /// Gets a dictionary of gist files to update. + /// + /// + /// Note: All files from the previous version of the gist are carried over by default if not included in the hash. + /// Deletes can be performed by including the filename with a `null` hash. + /// public IDictionary Files { get; private set; } internal string DebuggerDisplay diff --git a/Octokit/Models/Request/IssueUpdate.cs b/Octokit/Models/Request/IssueUpdate.cs index 86e809a5..d0910a85 100644 --- a/Octokit/Models/Request/IssueUpdate.cs +++ b/Octokit/Models/Request/IssueUpdate.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Globalization; @@ -9,11 +10,6 @@ namespace Octokit [DebuggerDisplay("{DebuggerDisplay,nq}")] public class IssueUpdate { - public IssueUpdate() - { - Labels = new Collection(); - } - /// /// Title of the milestone (required) /// @@ -49,12 +45,13 @@ namespace Octokit /// /// Only users with push access can set labels for new issues. Labels are silently dropped otherwise. /// - public Collection Labels { get; private set; } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public ICollection Labels { get; set; } /// /// Whether the issue is open or closed. /// - public ItemState State { get; set; } + public ItemState? State { get; set; } internal string DebuggerDisplay { diff --git a/Octokit/Models/Request/MilestoneUpdate.cs b/Octokit/Models/Request/MilestoneUpdate.cs index a148cb85..4da852cd 100644 --- a/Octokit/Models/Request/MilestoneUpdate.cs +++ b/Octokit/Models/Request/MilestoneUpdate.cs @@ -7,11 +7,6 @@ namespace Octokit [DebuggerDisplay("{DebuggerDisplay,nq}")] public class MilestoneUpdate { - /// - /// The milestone number. - /// - public int Number { get; set; } - /// /// Title of the milestone (required) /// @@ -20,7 +15,7 @@ namespace Octokit /// /// Whether the milestone is open or closed. The default is . /// - public ItemState State { get; set; } + public ItemState? State { get; set; } /// /// Optional description for the milestone. diff --git a/Octokit/Models/Request/NewRelease.cs b/Octokit/Models/Request/NewRelease.cs new file mode 100644 index 00000000..18153498 --- /dev/null +++ b/Octokit/Models/Request/NewRelease.cs @@ -0,0 +1,31 @@ +using System; +using System.Diagnostics; +using System.Globalization; + +namespace Octokit +{ + [DebuggerDisplay("{DebuggerDisplay,nq}")] + public class NewRelease + { + public NewRelease(string tagName) + { + Ensure.ArgumentNotNullOrEmptyString(tagName, "tagName"); + TagName = tagName; + } + + public string TagName { get; private set; } + public string TargetCommitish { get; set; } + public string Name { get; set; } + public string Body { get; set; } + public bool Draft { get; set; } + public bool Prerelease { get; set; } + + internal string DebuggerDisplay + { + get + { + return String.Format(CultureInfo.InvariantCulture, "Name: {0} TagName: {1}", Name, TagName); + } + } + } +} \ No newline at end of file diff --git a/Octokit/Models/Request/PullRequestUpdate.cs b/Octokit/Models/Request/PullRequestUpdate.cs index 4c441a1a..d5f6121c 100644 --- a/Octokit/Models/Request/PullRequestUpdate.cs +++ b/Octokit/Models/Request/PullRequestUpdate.cs @@ -7,11 +7,6 @@ namespace Octokit [DebuggerDisplay("{DebuggerDisplay,nq}")] public class PullRequestUpdate { - /// - /// The pull request number. - /// - public int Number { get; set; } - /// /// Title of the pull request (required) /// @@ -20,19 +15,7 @@ namespace Octokit /// /// Whether the pull request is open or closed. The default is . /// - public ItemState State { get; set; } - - /// - /// The branch (or git ref) you want your changes pulled into. This should be an existing - /// branch on the current repository. You cannot submit a pull request to one repo that - /// requests a merge to a base of another repo. - /// - public string Base { get; set; } - - /// - /// The branch (or git ref) where your changes are implemented. - /// - public string Head { get; set; } + public ItemState? State { get; set; } /// /// The body for the pull request. Supports GFM. @@ -43,7 +26,7 @@ namespace Octokit { get { - return String.Format(CultureInfo.InvariantCulture, "Title: {0}: Base:{1}", Title, Base); + return String.Format(CultureInfo.InvariantCulture, "Title: {0}", Title); } } } diff --git a/Octokit/Models/Request/ReleaseUpdate.cs b/Octokit/Models/Request/ReleaseUpdate.cs index 264419dc..84f42869 100644 --- a/Octokit/Models/Request/ReleaseUpdate.cs +++ b/Octokit/Models/Request/ReleaseUpdate.cs @@ -7,18 +7,12 @@ namespace Octokit [DebuggerDisplay("{DebuggerDisplay,nq}")] public class ReleaseUpdate { - public ReleaseUpdate(string tagName) - { - Ensure.ArgumentNotNullOrEmptyString(tagName, "tagName"); - TagName = tagName; - } - - public string TagName { get; private set; } + public string TagName { get; set; } public string TargetCommitish { get; set; } public string Name { get; set; } public string Body { get; set; } - public bool Draft { get; set; } - public bool Prerelease { get; set; } + public bool? Draft { get; set; } + public bool? Prerelease { get; set; } internal string DebuggerDisplay { diff --git a/Octokit/Models/Response/Release.cs b/Octokit/Models/Response/Release.cs index d71e399c..f737554a 100644 --- a/Octokit/Models/Response/Release.cs +++ b/Octokit/Models/Response/Release.cs @@ -31,13 +31,14 @@ namespace Octokit public ReleaseUpdate ToUpdate() { - return new ReleaseUpdate(TagName) + return new ReleaseUpdate { Body = Body, Draft = Draft, Name = Name, Prerelease = Prerelease, - TargetCommitish = TargetCommitish + TargetCommitish = TargetCommitish, + TagName = TagName }; } } diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index f15b228e..e333e774 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -339,6 +339,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index 38a0f067..3fb5c1e4 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -349,6 +349,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index db36ecaa..ac14b4b8 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -344,6 +344,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-Portable.csproj b/Octokit/Octokit-Portable.csproj index 920aea94..1bac375d 100644 --- a/Octokit/Octokit-Portable.csproj +++ b/Octokit/Octokit-Portable.csproj @@ -337,6 +337,7 @@ + diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 18d1f502..c2671b0e 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -341,6 +341,7 @@ + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index 72d298a9..c21d7900 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -76,6 +76,7 @@ +