Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 85969ad

Browse files
Preventing the exposure of Octokit objects to the codebase
1 parent 97273c4 commit 85969ad

File tree

6 files changed

+68
-21
lines changed

6 files changed

+68
-21
lines changed

src/GitHub.Api/Application/ApiClient.cs

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private async Task LogoutInternal(UriString host)
5050
await loginManager.Logout(host);
5151
}
5252

53-
public async Task CreateRepository(NewRepository newRepository, Action<Octokit.Repository, Exception> callback, string organization = null)
53+
public async Task CreateRepository(NewRepository newRepository, Action<GitHubRepository, Exception> callback, string organization = null)
5454
{
5555
Guard.ArgumentNotNull(callback, "callback");
5656
try
@@ -64,7 +64,7 @@ public async Task CreateRepository(NewRepository newRepository, Action<Octokit.R
6464
}
6565
}
6666

67-
public async Task GetOrganizations(Action<IList<Organization>> onSuccess, Action<Exception> onError = null)
67+
public async Task GetOrganizations(Action<Organization[]> onSuccess, Action<Exception> onError = null)
6868
{
6969
Guard.ArgumentNotNull(onSuccess, nameof(onSuccess));
7070
await GetOrganizationInternal(onSuccess, onError);
@@ -84,7 +84,7 @@ public async Task ValidateCurrentUser(Action onSuccess, Action<Exception> onErro
8484
}
8585
}
8686

87-
public async Task GetCurrentUser(Action<Octokit.User> callback)
87+
public async Task GetCurrentUser(Action<GitHubUser> callback)
8888
{
8989
Guard.ArgumentNotNull(callback, "callback");
9090
var user = await GetCurrentUserInternal();
@@ -187,7 +187,7 @@ public async Task<bool> ContinueLoginAsync(LoginResult loginResult, Func<LoginRe
187187
return result.Code == LoginResultCodes.Success;
188188
}
189189

190-
private async Task<Octokit.Repository> CreateRepositoryInternal(NewRepository newRepository, string organization)
190+
private async Task<GitHubRepository> CreateRepositoryInternal(NewRepository newRepository, string organization)
191191
{
192192
try
193193
{
@@ -196,18 +196,18 @@ public async Task<bool> ContinueLoginAsync(LoginResult loginResult, Func<LoginRe
196196
await ValidateKeychain();
197197
await ValidateCurrentUserInternal();
198198

199-
Octokit.Repository repository;
199+
GitHubRepository repository;
200200
if (!string.IsNullOrEmpty(organization))
201201
{
202202
logger.Trace("Creating repository for organization");
203203

204-
repository = await githubClient.Repository.Create(organization, newRepository);
204+
repository = (await githubClient.Repository.Create(organization, newRepository)).ToGitHubRepository();
205205
}
206206
else
207207
{
208208
logger.Trace("Creating repository for user");
209209

210-
repository = await githubClient.Repository.Create(newRepository);
210+
repository = (await githubClient.Repository.Create(newRepository)).ToGitHubRepository();
211211
}
212212

213213
logger.Trace("Created Repository");
@@ -220,7 +220,7 @@ public async Task<bool> ContinueLoginAsync(LoginResult loginResult, Func<LoginRe
220220
}
221221
}
222222

223-
private async Task GetOrganizationInternal(Action<IList<Organization>> onSuccess, Action<Exception> onError = null)
223+
private async Task GetOrganizationInternal(Action<Organization[]> onSuccess, Action<Exception> onError = null)
224224
{
225225
try
226226
{
@@ -235,7 +235,11 @@ private async Task GetOrganizationInternal(Action<IList<Organization>> onSuccess
235235

236236
if (organizations != null)
237237
{
238-
onSuccess(organizations.ToArray());
238+
var array = organizations.Select(organization => new Organization() {
239+
Name = organization.Name,
240+
Login = organization.Login
241+
}).ToArray();
242+
onSuccess(array);
239243
}
240244
}
241245
catch(Exception ex)
@@ -245,14 +249,14 @@ private async Task GetOrganizationInternal(Action<IList<Organization>> onSuccess
245249
}
246250
}
247251

248-
private async Task<Octokit.User> GetCurrentUserInternal()
252+
private async Task<GitHubUser> GetCurrentUserInternal()
249253
{
250254
try
251255
{
252256
logger.Trace("Getting Current User");
253257
await ValidateKeychain();
254258

255-
return await githubClient.User.Current();
259+
return (await githubClient.User.Current()).ToGitHubUser();
256260
}
257261
catch (Exception ex)
258262
{
@@ -311,6 +315,18 @@ private async Task ValidateKeychain()
311315
}
312316
}
313317

318+
class GitHubUser
319+
{
320+
public string Name { get; set; }
321+
public string Login { get; set; }
322+
}
323+
324+
class GitHubRepository
325+
{
326+
public string Name { get; set; }
327+
public string CloneUrl { get; set; }
328+
}
329+
314330
class ApiClientException : Exception
315331
{
316332
public ApiClientException()

src/GitHub.Api/Application/IApiClient.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ interface IApiClient
99
{
1010
HostAddress HostAddress { get; }
1111
UriString OriginalUrl { get; }
12-
Task CreateRepository(NewRepository newRepository, Action<Octokit.Repository, Exception> callback, string organization = null);
13-
Task GetOrganizations(Action<IList<Organization>> onSuccess, Action<Exception> onError = null);
12+
Task CreateRepository(NewRepository newRepository, Action<GitHubRepository, Exception> callback, string organization = null);
13+
Task GetOrganizations(Action<Organization[]> onSuccess, Action<Exception> onError = null);
1414
Task Login(string username, string password, Action<LoginResult> need2faCode, Action<bool, string> result);
1515
Task ContinueLogin(LoginResult loginResult, string code);
1616
Task<bool> LoginAsync(string username, string password, Func<LoginResult, string> need2faCode);
1717
Task Logout(UriString host);
18-
Task GetCurrentUser(Action<Octokit.User> callback);
18+
Task GetCurrentUser(Action<GitHubUser> callback);
1919
Task ValidateCurrentUser(Action onSuccess, Action<Exception> onError = null);
2020
}
2121
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
namespace GitHub.Unity
2+
{
3+
static class OctokitExtensions
4+
{
5+
public static GitHubUser ToGitHubUser(this Octokit.User user)
6+
{
7+
return new GitHubUser() {
8+
Name = user.Name,
9+
Login = user.Login,
10+
};
11+
}
12+
13+
public static GitHubRepository ToGitHubRepository(this Octokit.Repository repository)
14+
{
15+
return new GitHubRepository {
16+
Name = repository.Name,
17+
CloneUrl = repository.CloneUrl
18+
};
19+
}
20+
}
21+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace GitHub.Unity
2+
{
3+
class Organization
4+
{
5+
public string Name { get; set; }
6+
public string Login { get; set; }
7+
}
8+
}

src/GitHub.Api/GitHub.Api.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@
9999
<Compile Include="Application\ApplicationInfo.cs" />
100100
<Compile Include="Application\LoginResult.cs" />
101101
<Compile Include="Application\AppConfiguration.cs" />
102+
<Compile Include="Application\OctokitExtensions.cs" />
103+
<Compile Include="Application\Organization.cs" />
102104
<Compile Include="Extensions\ListExtensions.cs" />
103105
<Compile Include="Git\Tasks\GitLfsVersionTask.cs" />
104106
<Compile Include="Git\Tasks\GitVersionTask.cs" />

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/PublishView.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class PublishView : Subview
2929

3030
[SerializeField] private string username;
3131
[SerializeField] private string[] owners = { OwnersDefaultText };
32-
[SerializeField] private IList<Organization> organizations;
32+
[SerializeField] private string[] publishOwners;
3333
[SerializeField] private int selectedOwner;
3434
[SerializeField] private string repoName = String.Empty;
3535
[SerializeField] private string repoDescription = "";
@@ -67,7 +67,7 @@ public IApiClient Client
6767
public override void OnEnable()
6868
{
6969
base.OnEnable();
70-
ownersNeedLoading = organizations == null && !isBusy;
70+
ownersNeedLoading = publishOwners == null && !isBusy;
7171
}
7272

7373
public override void OnDataUpdate()
@@ -106,14 +106,14 @@ private void LoadOwners()
106106

107107
Client.GetOrganizations(orgs =>
108108
{
109-
organizations = orgs;
110-
Logger.Trace("Loaded {0} Owners", organizations.Count);
109+
Logger.Trace("Loaded {0} Owners", orgs.Length);
111110

112-
var organizationLogins = organizations
111+
publishOwners = orgs
113112
.OrderBy(organization => organization.Login)
114-
.Select(organization => organization.Login);
113+
.Select(organization => organization.Login)
114+
.ToArray();
115115

116-
owners = new[] { OwnersDefaultText, username }.Union(organizationLogins).ToArray();
116+
owners = new[] { OwnersDefaultText, username }.Union(publishOwners).ToArray();
117117

118118
isBusy = false;
119119
}, exception =>

0 commit comments

Comments
 (0)