From 5a24bbb9f850be28e7aed2770b2cb013ad493072 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Tue, 8 Jul 2014 11:08:37 +0930 Subject: [PATCH 1/6] stubbed the client and a couple of methods --- Octokit/Clients/IUserKeysClient.cs | 11 +++++++++++ Octokit/Clients/IUsersClient.cs | 8 ++++++++ Octokit/Clients/UserKeysClient.cs | 23 +++++++++++++++++++++++ Octokit/Clients/UsersClient.cs | 9 +++++++++ Octokit/Models/Request/PublicKey.cs | 8 ++++++++ Octokit/Octokit-Mono.csproj | 3 +++ Octokit/Octokit-MonoAndroid.csproj | 3 +++ Octokit/Octokit-Monotouch.csproj | 3 +++ Octokit/Octokit-Portable.csproj | 3 +++ Octokit/Octokit-netcore45.csproj | 3 +++ Octokit/Octokit.csproj | 3 +++ 11 files changed, 77 insertions(+) create mode 100644 Octokit/Clients/IUserKeysClient.cs create mode 100644 Octokit/Clients/UserKeysClient.cs create mode 100644 Octokit/Models/Request/PublicKey.cs diff --git a/Octokit/Clients/IUserKeysClient.cs b/Octokit/Clients/IUserKeysClient.cs new file mode 100644 index 00000000..4c369862 --- /dev/null +++ b/Octokit/Clients/IUserKeysClient.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Octokit +{ + public interface IUserKeysClient + { + Task> GetAll(); + Task> GetAll(string userName); + } +} diff --git a/Octokit/Clients/IUsersClient.cs b/Octokit/Clients/IUsersClient.cs index 607e849b..1e2cefe5 100644 --- a/Octokit/Clients/IUsersClient.cs +++ b/Octokit/Clients/IUsersClient.cs @@ -19,6 +19,14 @@ namespace Octokit /// IUserEmailsClient Email { get; } + /// + /// A client for GitHub's User Keys API + /// + /// + /// See the Keys API documentation for more information. + /// + IUserKeysClient Keys { get; } + /// /// Returns the user specified by the login. /// diff --git a/Octokit/Clients/UserKeysClient.cs b/Octokit/Clients/UserKeysClient.cs new file mode 100644 index 00000000..da6cc736 --- /dev/null +++ b/Octokit/Clients/UserKeysClient.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Octokit +{ + public class UserKeysClient : ApiClient, IUserKeysClient + { + public UserKeysClient(IApiConnection apiConnection) + : base(apiConnection) + { + } + + public Task> GetAll() + { + return null; + } + + public Task> GetAll(string userName) + { + return null; + } + } +} \ No newline at end of file diff --git a/Octokit/Clients/UsersClient.cs b/Octokit/Clients/UsersClient.cs index 54e185d3..03429382 100644 --- a/Octokit/Clients/UsersClient.cs +++ b/Octokit/Clients/UsersClient.cs @@ -21,6 +21,7 @@ namespace Octokit { Email = new UserEmailsClient(apiConnection); Followers = new FollowersClient(apiConnection); + Keys = new UserKeysClient(apiConnection); } /// @@ -31,6 +32,14 @@ namespace Octokit /// public IUserEmailsClient Email { get; private set; } + /// + /// A client for GitHub's User Keys API + /// + /// + /// See the Keys API documentation for more information. + /// + public IUserKeysClient Keys { get; private set; } + /// /// Returns the user specified by the login. /// diff --git a/Octokit/Models/Request/PublicKey.cs b/Octokit/Models/Request/PublicKey.cs new file mode 100644 index 00000000..1e5c23bd --- /dev/null +++ b/Octokit/Models/Request/PublicKey.cs @@ -0,0 +1,8 @@ +namespace Octokit +{ + public class PublicKey + { + public int Id { get; set; } + public string Key { get; set; } + } +} diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index a5905eb4..82ac725a 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -324,6 +324,9 @@ + + + \ No newline at end of file diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index 42e54c8e..ff10f3b6 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -334,6 +334,9 @@ + + + \ No newline at end of file diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index b7086e9a..578182e0 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -329,6 +329,9 @@ + + + \ No newline at end of file diff --git a/Octokit/Octokit-Portable.csproj b/Octokit/Octokit-Portable.csproj index 1f9ecd6d..09eec189 100644 --- a/Octokit/Octokit-Portable.csproj +++ b/Octokit/Octokit-Portable.csproj @@ -321,6 +321,9 @@ + + + diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index d2344d30..1aa16020 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -325,6 +325,9 @@ + + + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index 076c15bb..b01b97a6 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -57,6 +57,7 @@ + @@ -64,6 +65,7 @@ + @@ -71,6 +73,7 @@ + From d9cb1a9a578375c9c54ceccaf5c11ca2f7f6d818 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Tue, 8 Jul 2014 11:17:55 +0930 Subject: [PATCH 2/6] stubbed the observable clients --- .../Clients/IObservableUserKeysClient.cs | 31 +++++++++++++++++++ .../Clients/IObservableUsersClient.cs | 8 +++++ .../Clients/ObservableUserKeysClient.cs | 28 +++++++++++++++++ .../Clients/ObservableUsersClient.cs | 9 ++++++ Octokit.Reactive/Octokit.Reactive.csproj | 2 ++ Octokit/Clients/IUserKeysClient.cs | 21 +++++++++++++ Octokit/Clients/UserKeysClient.cs | 20 ++++++++++++ 7 files changed, 119 insertions(+) create mode 100644 Octokit.Reactive/Clients/IObservableUserKeysClient.cs create mode 100644 Octokit.Reactive/Clients/ObservableUserKeysClient.cs diff --git a/Octokit.Reactive/Clients/IObservableUserKeysClient.cs b/Octokit.Reactive/Clients/IObservableUserKeysClient.cs new file mode 100644 index 00000000..a26686e0 --- /dev/null +++ b/Octokit.Reactive/Clients/IObservableUserKeysClient.cs @@ -0,0 +1,31 @@ +using System; + +namespace Octokit.Reactive +{ + /// + /// A client for GitHub's User Keys API. + /// + /// + /// See the User Keys API documentation for more information. + /// + public interface IObservableUserKeysClient + { + /// + /// Gets all public keys for the authenticated user. + /// + /// + /// https://developer.github.com/v3/users/keys/#list-your-public-keys + /// + /// The s for the authenticated user. + IObservable GetAll(); + + /// + /// Gets all verified public keys for a user. + /// + /// + /// https://developer.github.com/v3/users/keys/#list-public-keys-for-a-user + /// + /// The s for the user. + IObservable GetAll(string userName); + } +} diff --git a/Octokit.Reactive/Clients/IObservableUsersClient.cs b/Octokit.Reactive/Clients/IObservableUsersClient.cs index 2cc3ceb0..20ab684d 100644 --- a/Octokit.Reactive/Clients/IObservableUsersClient.cs +++ b/Octokit.Reactive/Clients/IObservableUsersClient.cs @@ -43,5 +43,13 @@ namespace Octokit.Reactive /// See the Emails API documentation for more information. /// IObservableUserEmailsClient Email { get; } + + /// + /// A client for GitHub's User Keys API + /// + /// + /// See the Keys API documentation for more information. + /// + IObservableUserKeysClient Keys { get; } } } diff --git a/Octokit.Reactive/Clients/ObservableUserKeysClient.cs b/Octokit.Reactive/Clients/ObservableUserKeysClient.cs new file mode 100644 index 00000000..2ec1de04 --- /dev/null +++ b/Octokit.Reactive/Clients/ObservableUserKeysClient.cs @@ -0,0 +1,28 @@ +using System; +using System.Reactive.Linq; +using System.Reactive.Threading.Tasks; + +namespace Octokit.Reactive +{ + public class ObservableUserKeysClient : IObservableUserKeysClient + { + readonly IUserKeysClient _client; + + public ObservableUserKeysClient(IGitHubClient client) + { + Ensure.ArgumentNotNull(client, "client"); + + _client = client.User.Keys; + } + + public IObservable GetAll() + { + return _client.GetAll().ToObservable().SelectMany(k => k); + } + + public IObservable GetAll(string userName) + { + return _client.GetAll(userName).ToObservable().SelectMany(k => k); + } + } +} \ No newline at end of file diff --git a/Octokit.Reactive/Clients/ObservableUsersClient.cs b/Octokit.Reactive/Clients/ObservableUsersClient.cs index 4b8f7ace..1d6b9c6e 100644 --- a/Octokit.Reactive/Clients/ObservableUsersClient.cs +++ b/Octokit.Reactive/Clients/ObservableUsersClient.cs @@ -15,6 +15,7 @@ namespace Octokit.Reactive Followers = new ObservableFollowersClient(client); Email = new ObservableUserEmailsClient(client); + Keys = new ObservableUserKeysClient(client); } /// @@ -66,5 +67,13 @@ namespace Octokit.Reactive /// See the Emails API documentation for more information. /// public IObservableUserEmailsClient Email { get; private set; } + + /// + /// A client for GitHub's User Keys API + /// + /// + /// See the Keys API documentation for more information. + /// + public IObservableUserKeysClient Keys { get; private set; } } } diff --git a/Octokit.Reactive/Octokit.Reactive.csproj b/Octokit.Reactive/Octokit.Reactive.csproj index fd8288d4..18f89bee 100644 --- a/Octokit.Reactive/Octokit.Reactive.csproj +++ b/Octokit.Reactive/Octokit.Reactive.csproj @@ -76,6 +76,7 @@ + @@ -144,6 +145,7 @@ + diff --git a/Octokit/Clients/IUserKeysClient.cs b/Octokit/Clients/IUserKeysClient.cs index 4c369862..d04c9546 100644 --- a/Octokit/Clients/IUserKeysClient.cs +++ b/Octokit/Clients/IUserKeysClient.cs @@ -3,9 +3,30 @@ using System.Threading.Tasks; namespace Octokit { + /// + /// A client for GitHub's User Keys API. + /// + /// + /// See the User Keys API documentation for more information. + /// public interface IUserKeysClient { + /// + /// Gets all public keys for the authenticated user. + /// + /// + /// https://developer.github.com/v3/users/keys/#list-your-public-keys + /// + /// The s for the authenticated user. Task> GetAll(); + + /// + /// Gets all verified public keys for a user. + /// + /// + /// https://developer.github.com/v3/users/keys/#list-public-keys-for-a-user + /// + /// The s for the user. Task> GetAll(string userName); } } diff --git a/Octokit/Clients/UserKeysClient.cs b/Octokit/Clients/UserKeysClient.cs index da6cc736..15df5bbe 100644 --- a/Octokit/Clients/UserKeysClient.cs +++ b/Octokit/Clients/UserKeysClient.cs @@ -3,6 +3,12 @@ using System.Threading.Tasks; namespace Octokit { + /// + /// A client for GitHub's User Keys API. + /// + /// + /// See the User Keys API documentation for more information. + /// public class UserKeysClient : ApiClient, IUserKeysClient { public UserKeysClient(IApiConnection apiConnection) @@ -10,11 +16,25 @@ namespace Octokit { } + /// + /// Gets all public keys for the authenticated user. + /// + /// + /// https://developer.github.com/v3/users/keys/#list-your-public-keys + /// + /// The s for the authenticated user. public Task> GetAll() { return null; } + /// + /// Gets all verified public keys for a user. + /// + /// + /// https://developer.github.com/v3/users/keys/#list-public-keys-for-a-user + /// + /// The s for the user. public Task> GetAll(string userName) { return null; From 364f46d444a6219bcf190a9476d6bdec28dc5ddf Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Tue, 8 Jul 2014 11:25:53 +0930 Subject: [PATCH 3/6] added DebuggerDisplay attributes --- Octokit/Models/Request/PublicKey.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Octokit/Models/Request/PublicKey.cs b/Octokit/Models/Request/PublicKey.cs index 1e5c23bd..3e8fc431 100644 --- a/Octokit/Models/Request/PublicKey.cs +++ b/Octokit/Models/Request/PublicKey.cs @@ -1,8 +1,21 @@ -namespace Octokit +using System; +using System.Globalization; + +namespace Octokit { public class PublicKey { public int Id { get; set; } public string Key { get; set; } + public string Url { get; set; } + public string Title { get; set; } + + internal string DebuggerDisplay + { + get + { + return String.Format(CultureInfo.InvariantCulture, "ID: {0} Key: {1}", Id, Key); + } + } } } From 605500b34f0b1f0e1b49b8dfe0d520d95336499e Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Tue, 8 Jul 2014 11:42:59 +0930 Subject: [PATCH 4/6] actually implement the thing --- .../Clients/ObservableUserKeysClient.cs | 20 +++++++++++++++++++ Octokit.Reactive/Octokit.Reactive-Mono.csproj | 2 ++ .../Octokit.Reactive-MonoAndroid.csproj | 2 ++ .../Octokit.Reactive-Monotouch.csproj | 2 ++ Octokit/Clients/UserKeysClient.cs | 4 ++-- Octokit/Helpers/ApiUrls.Keys.cs | 19 ++++++++++++++++++ Octokit/Helpers/ApiUrls.cs | 2 +- Octokit/Models/Request/PublicKey.cs | 8 ++++++++ Octokit/Octokit-Mono.csproj | 1 + Octokit/Octokit-MonoAndroid.csproj | 1 + Octokit/Octokit-Monotouch.csproj | 1 + Octokit/Octokit-Portable.csproj | 1 + Octokit/Octokit-netcore45.csproj | 1 + Octokit/Octokit.csproj | 1 + 14 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 Octokit/Helpers/ApiUrls.Keys.cs diff --git a/Octokit.Reactive/Clients/ObservableUserKeysClient.cs b/Octokit.Reactive/Clients/ObservableUserKeysClient.cs index 2ec1de04..8e43bdd8 100644 --- a/Octokit.Reactive/Clients/ObservableUserKeysClient.cs +++ b/Octokit.Reactive/Clients/ObservableUserKeysClient.cs @@ -4,6 +4,12 @@ using System.Reactive.Threading.Tasks; namespace Octokit.Reactive { + /// + /// A client for GitHub's User Keys API. + /// + /// + /// See the User Keys API documentation for more information. + /// public class ObservableUserKeysClient : IObservableUserKeysClient { readonly IUserKeysClient _client; @@ -15,11 +21,25 @@ namespace Octokit.Reactive _client = client.User.Keys; } + /// + /// Gets all public keys for the authenticated user. + /// + /// + /// https://developer.github.com/v3/users/keys/#list-your-public-keys + /// + /// The s for the authenticated user. public IObservable GetAll() { return _client.GetAll().ToObservable().SelectMany(k => k); } + /// + /// Gets all verified public keys for a user. + /// + /// + /// https://developer.github.com/v3/users/keys/#list-public-keys-for-a-user + /// + /// The s for the user. public IObservable GetAll(string userName) { return _client.GetAll(userName).ToObservable().SelectMany(k => k); diff --git a/Octokit.Reactive/Octokit.Reactive-Mono.csproj b/Octokit.Reactive/Octokit.Reactive-Mono.csproj index 153a4e0e..e952a858 100644 --- a/Octokit.Reactive/Octokit.Reactive-Mono.csproj +++ b/Octokit.Reactive/Octokit.Reactive-Mono.csproj @@ -144,6 +144,8 @@ + + diff --git a/Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj b/Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj index dac209cf..33dfb655 100644 --- a/Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj +++ b/Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj @@ -153,6 +153,8 @@ + + diff --git a/Octokit.Reactive/Octokit.Reactive-Monotouch.csproj b/Octokit.Reactive/Octokit.Reactive-Monotouch.csproj index 581837d2..03e99810 100644 --- a/Octokit.Reactive/Octokit.Reactive-Monotouch.csproj +++ b/Octokit.Reactive/Octokit.Reactive-Monotouch.csproj @@ -148,6 +148,8 @@ + + diff --git a/Octokit/Clients/UserKeysClient.cs b/Octokit/Clients/UserKeysClient.cs index 15df5bbe..29cc3fb7 100644 --- a/Octokit/Clients/UserKeysClient.cs +++ b/Octokit/Clients/UserKeysClient.cs @@ -25,7 +25,7 @@ namespace Octokit /// The s for the authenticated user. public Task> GetAll() { - return null; + return ApiConnection.GetAll(ApiUrls.Keys()); } /// @@ -37,7 +37,7 @@ namespace Octokit /// The s for the user. public Task> GetAll(string userName) { - return null; + return ApiConnection.GetAll(ApiUrls.Keys(userName)); } } } \ No newline at end of file diff --git a/Octokit/Helpers/ApiUrls.Keys.cs b/Octokit/Helpers/ApiUrls.Keys.cs new file mode 100644 index 00000000..b936322e --- /dev/null +++ b/Octokit/Helpers/ApiUrls.Keys.cs @@ -0,0 +1,19 @@ +using System; + +namespace Octokit +{ + public static partial class ApiUrls + { + static readonly Uri _currentUserKeysUrl = new Uri("user/keys", UriKind.Relative); + + public static Uri Keys() + { + return _currentUserKeysUrl; + } + + public static Uri Keys(string userName) + { + return "users/{0}/keys".FormatUri(userName); + } + } +} diff --git a/Octokit/Helpers/ApiUrls.cs b/Octokit/Helpers/ApiUrls.cs index 39021fd8..44dc39e2 100644 --- a/Octokit/Helpers/ApiUrls.cs +++ b/Octokit/Helpers/ApiUrls.cs @@ -5,7 +5,7 @@ namespace Octokit /// /// Class for retrieving GitHub ApI URLs /// - public static class ApiUrls + public static partial class ApiUrls { static readonly Uri _currentUserRepositoriesUrl = new Uri("user/repos", UriKind.Relative); static readonly Uri _currentUserOrganizationsUrl = new Uri("user/orgs", UriKind.Relative); diff --git a/Octokit/Models/Request/PublicKey.cs b/Octokit/Models/Request/PublicKey.cs index 3e8fc431..7df9949b 100644 --- a/Octokit/Models/Request/PublicKey.cs +++ b/Octokit/Models/Request/PublicKey.cs @@ -7,7 +7,15 @@ namespace Octokit { public int Id { get; set; } public string Key { get; set; } + + /// + /// Only visible for the current user, or with the correct OAuth scope + /// public string Url { get; set; } + + /// + /// Only visible for the current user, or with the correct OAuth scope + /// public string Title { get; set; } internal string DebuggerDisplay diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index 82ac725a..f3c0ab1c 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -327,6 +327,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index ff10f3b6..a61ab64a 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -337,6 +337,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index 578182e0..5d8d0105 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -332,6 +332,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-Portable.csproj b/Octokit/Octokit-Portable.csproj index 09eec189..c12471e3 100644 --- a/Octokit/Octokit-Portable.csproj +++ b/Octokit/Octokit-Portable.csproj @@ -324,6 +324,7 @@ + diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 1aa16020..3711032b 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -328,6 +328,7 @@ + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index b01b97a6..336b6cbe 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -69,6 +69,7 @@ + From ba01aab0cffe3c2294ad696f0c5f625caf8ae753 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Tue, 8 Jul 2014 11:48:02 +0930 Subject: [PATCH 5/6] added some integration tests --- .../Clients/UserKeysClientTests.cs | 44 +++++++++++++++++++ .../Octokit.Tests.Integration.csproj | 1 + 2 files changed, 45 insertions(+) create mode 100644 Octokit.Tests.Integration/Clients/UserKeysClientTests.cs diff --git a/Octokit.Tests.Integration/Clients/UserKeysClientTests.cs b/Octokit.Tests.Integration/Clients/UserKeysClientTests.cs new file mode 100644 index 00000000..8d61050e --- /dev/null +++ b/Octokit.Tests.Integration/Clients/UserKeysClientTests.cs @@ -0,0 +1,44 @@ +using System.Threading.Tasks; +using Xunit; + +namespace Octokit.Tests.Integration.Clients +{ + public class UserKeysClientTests + { + [IntegrationTest] + public async Task GetAll() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + var keys = await github.User.Keys.GetAll(); + Assert.NotEmpty(keys); + + var first = keys[0]; + Assert.NotNull(first.Id); + Assert.NotNull(first.Key); + Assert.NotNull(first.Title); + Assert.NotNull(first.Url); + } + + [IntegrationTest] + public async Task GetAllForGivenUser() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + var keys = await github.User.Keys.GetAll("shiftkey"); + Assert.NotEmpty(keys); + + var first = keys[0]; + Assert.NotNull(first.Id); + Assert.NotNull(first.Key); + Assert.Null(first.Title); + Assert.Null(first.Url); + } + } +} diff --git a/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj b/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj index 97d9eff0..6ab0b6e6 100644 --- a/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj +++ b/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj @@ -78,6 +78,7 @@ + From 207a6848eed3a159c7dfb4833579bc0b10d33a44 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Wed, 9 Jul 2014 13:32:34 +0930 Subject: [PATCH 6/6] missed the DebuggerDisplay attribute --- Octokit/Models/Request/PublicKey.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Octokit/Models/Request/PublicKey.cs b/Octokit/Models/Request/PublicKey.cs index 7df9949b..925fd2a3 100644 --- a/Octokit/Models/Request/PublicKey.cs +++ b/Octokit/Models/Request/PublicKey.cs @@ -1,8 +1,10 @@ using System; +using System.Diagnostics; using System.Globalization; namespace Octokit { + [DebuggerDisplay("{DebuggerDisplay,nq}")] public class PublicKey { public int Id { get; set; }