diff --git a/Octokit.Tests.Integration/CommitsClientTests.cs b/Octokit.Tests.Integration/CommitsClientTests.cs index 5e8c3ea8..9e89a608 100644 --- a/Octokit.Tests.Integration/CommitsClientTests.cs +++ b/Octokit.Tests.Integration/CommitsClientTests.cs @@ -29,8 +29,8 @@ namespace Octokit.Tests.Integration { string owner = this._repository.Owner.Login; - var author = new UserAction { Name = "author", Email = "test-author@example.com", Date = DateTime.UtcNow }; - var commiter = new UserAction { Name = "commiter", Email = "test-commiter@example.com", Date = DateTime.Today }; + var author = new Signature { Name = "author", Email = "test-author@example.com", Date = DateTime.UtcNow }; + var commiter = new Signature { Name = "commiter", Email = "test-commiter@example.com", Date = DateTime.Today }; var newCommit = new NewCommit("test-commit", "[Change this to tree sha]", Enumerable.Empty()) { diff --git a/Octokit.Tests/Clients/TagsClientTests.cs b/Octokit.Tests/Clients/TagsClientTests.cs index 2c6c3cff..bd6ec212 100644 --- a/Octokit.Tests/Clients/TagsClientTests.cs +++ b/Octokit.Tests/Clients/TagsClientTests.cs @@ -83,7 +83,7 @@ public class TagsClientTests Tag = "tag-name", Object = "tag-object", Type = TaggedType.Tree, - Tagger = new UserAction + Tagger = new Signature { Name = "tagger-name", Email = "tagger-email", diff --git a/Octokit.Tests/Models/CommitTests.cs b/Octokit.Tests/Models/CommitTests.cs index 48309389..5feb2cc9 100644 --- a/Octokit.Tests/Models/CommitTests.cs +++ b/Octokit.Tests/Models/CommitTests.cs @@ -14,14 +14,14 @@ public class CommitTests var parent1 = new GitReference { Sha = "parent1-reference", Url = "parent1-url" }; var parent2 = new GitReference { Sha = "parent2-reference", Url = "parent2-url" }; - var author = new UserAction + var author = new Signature { Name = "author-name", Email = "author-email", Date = new DateTime(2013, 10, 15, 13, 40, 14, DateTimeKind.Utc) }; - var committer = new UserAction { + var committer = new Signature { Name = "committer-name", Email = "committer-email", Date = new DateTime(2013, 06, 29, 10, 12, 50, DateTimeKind.Utc) diff --git a/Octokit.Tests/SimpleJsonSerializerTests.cs b/Octokit.Tests/SimpleJsonSerializerTests.cs index e8aa392d..0a69254c 100644 --- a/Octokit.Tests/SimpleJsonSerializerTests.cs +++ b/Octokit.Tests/SimpleJsonSerializerTests.cs @@ -79,6 +79,18 @@ namespace Octokit.Tests Assert.True(sample.IsSomething); Assert.True(sample.Private); } + + [Fact] + public void DeserializesInheritedProperties() + { + const string json = "{\"sha\":\"commit-sha\",\"url\":\"commit-url\",\"message\":\"commit-message\"}"; + + var result = new SimpleJsonSerializer().Deserialize(json); + + Assert.Equal("commit-sha", result.Sha); + Assert.Equal("commit-url", result.Url); + Assert.Equal("commit-message", result.Message); + } } public class Sample diff --git a/Octokit/Models/Request/NewCommit.cs b/Octokit/Models/Request/NewCommit.cs index 8d7ffbdf..86bc74db 100644 --- a/Octokit/Models/Request/NewCommit.cs +++ b/Octokit/Models/Request/NewCommit.cs @@ -15,7 +15,7 @@ namespace Octokit public string Tree { get; set; } public IEnumerable Parents { get; set; } - public UserAction Author { get; set; } - public UserAction Committer { get; set; } + public Signature Author { get; set; } + public Signature Committer { get; set; } } } \ No newline at end of file diff --git a/Octokit/Models/Request/NewTag.cs b/Octokit/Models/Request/NewTag.cs index 519372d6..a9e42cb4 100644 --- a/Octokit/Models/Request/NewTag.cs +++ b/Octokit/Models/Request/NewTag.cs @@ -10,6 +10,6 @@ namespace Octokit [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "Property name as defined by web api")] public TaggedType Type { get; set; } - public UserAction Tagger { get; set; } + public Signature Tagger { get; set; } } } \ No newline at end of file diff --git a/Octokit/Models/Response/Commit.cs b/Octokit/Models/Response/Commit.cs index bcaacf44..76b1e0d2 100644 --- a/Octokit/Models/Response/Commit.cs +++ b/Octokit/Models/Response/Commit.cs @@ -5,8 +5,8 @@ namespace Octokit public class Commit : GitReference { public string Message { get; set; } - public UserAction Author { get; set; } - public UserAction Committer { get; set; } + public Signature Author { get; set; } + public Signature Committer { get; set; } public GitReference Tree { get; set; } public IEnumerable Parents { get; set; } } diff --git a/Octokit/Models/Response/GitTag.cs b/Octokit/Models/Response/GitTag.cs index 6fb70c10..04f85e11 100644 --- a/Octokit/Models/Response/GitTag.cs +++ b/Octokit/Models/Response/GitTag.cs @@ -4,7 +4,7 @@ { public string Tag { get; set; } public string Message { get; set; } - public UserAction Tagger { get; set; } + public Signature Tagger { get; set; } public TagObject Object { get; set; } } } \ No newline at end of file diff --git a/Octokit/Models/Response/Tagger.cs b/Octokit/Models/Response/Signature.cs similarity index 86% rename from Octokit/Models/Response/Tagger.cs rename to Octokit/Models/Response/Signature.cs index a009300b..cb71b996 100644 --- a/Octokit/Models/Response/Tagger.cs +++ b/Octokit/Models/Response/Signature.cs @@ -2,7 +2,7 @@ namespace Octokit { - public class UserAction + public class Signature { public string Name { get; set; } public string Email { get; set; } diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index 60c33eb8..5473ddd6 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -92,7 +92,7 @@ - + diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index e55f0681..556fe0dd 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -103,7 +103,6 @@ - @@ -196,6 +195,7 @@ + diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index f2c78eb8..43a8e561 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -98,7 +98,6 @@ - @@ -191,6 +190,7 @@ + diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 3d374758..24a83d44 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -185,9 +185,9 @@ + - diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index c08c0c54..da8d975e 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -104,7 +104,7 @@ - + diff --git a/Octokit/SimpleJson.cs b/Octokit/SimpleJson.cs index fdb57d48..7588a721 100644 --- a/Octokit/SimpleJson.cs +++ b/Octokit/SimpleJson.cs @@ -1723,12 +1723,41 @@ namespace Octokit public static IEnumerable GetProperties(Type type) { #if SIMPLE_JSON_TYPEINFO - return type.GetTypeInfo().DeclaredProperties; + var typeInfo = type.GetTypeInfo(); + var properties = typeInfo.DeclaredProperties; + if(typeInfo.BaseType == null) + { + return properties; + } + + var result = new List(); + foreach (var property in properties) + { + result.Add(property); + } + + var baseProperties = GetProperties(typeInfo.BaseType); + foreach (var property in baseProperties) + { + result.Add(property); + } + + return result; #else return type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); #endif } + public static IList Build(IEnumerable properties) + { + var propertyList = new List(); + foreach (var property in properties) + { + propertyList.Add(property); + } + return propertyList; + } + public static IEnumerable GetFields(Type type) { #if SIMPLE_JSON_TYPEINFO