Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 27 additions & 11 deletions src/GitHub.Api/Application/ApiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ private async Task LogoutInternal(UriString host)
await loginManager.Logout(host);
}

public async Task CreateRepository(NewRepository newRepository, Action<Octokit.Repository, Exception> callback, string organization = null)
public async Task CreateRepository(NewRepository newRepository, Action<GitHubRepository, Exception> callback, string organization = null)
{
Guard.ArgumentNotNull(callback, "callback");
try
Expand All @@ -64,7 +64,7 @@ public async Task CreateRepository(NewRepository newRepository, Action<Octokit.R
}
}

public async Task GetOrganizations(Action<IList<Organization>> onSuccess, Action<Exception> onError = null)
public async Task GetOrganizations(Action<Organization[]> onSuccess, Action<Exception> onError = null)
{
Guard.ArgumentNotNull(onSuccess, nameof(onSuccess));
await GetOrganizationInternal(onSuccess, onError);
Expand All @@ -84,7 +84,7 @@ public async Task ValidateCurrentUser(Action onSuccess, Action<Exception> onErro
}
}

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

private async Task<Octokit.Repository> CreateRepositoryInternal(NewRepository newRepository, string organization)
private async Task<GitHubRepository> CreateRepositoryInternal(NewRepository newRepository, string organization)
{
try
{
Expand All @@ -196,18 +196,18 @@ public async Task<bool> ContinueLoginAsync(LoginResult loginResult, Func<LoginRe
await ValidateKeychain();
await ValidateCurrentUserInternal();

Octokit.Repository repository;
GitHubRepository repository;
if (!string.IsNullOrEmpty(organization))
{
logger.Trace("Creating repository for organization");

repository = await githubClient.Repository.Create(organization, newRepository);
repository = (await githubClient.Repository.Create(organization, newRepository)).ToGitHubRepository();
}
else
{
logger.Trace("Creating repository for user");

repository = await githubClient.Repository.Create(newRepository);
repository = (await githubClient.Repository.Create(newRepository)).ToGitHubRepository();
}

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

private async Task GetOrganizationInternal(Action<IList<Organization>> onSuccess, Action<Exception> onError = null)
private async Task GetOrganizationInternal(Action<Organization[]> onSuccess, Action<Exception> onError = null)
{
try
{
Expand All @@ -235,7 +235,11 @@ private async Task GetOrganizationInternal(Action<IList<Organization>> onSuccess

if (organizations != null)
{
onSuccess(organizations.ToArray());
var array = organizations.Select(organization => new Organization() {
Name = organization.Name,
Login = organization.Login
}).ToArray();
onSuccess(array);
}
}
catch(Exception ex)
Expand All @@ -245,14 +249,14 @@ private async Task GetOrganizationInternal(Action<IList<Organization>> onSuccess
}
}

private async Task<Octokit.User> GetCurrentUserInternal()
private async Task<GitHubUser> GetCurrentUserInternal()
{
try
{
logger.Trace("Getting Current User");
await ValidateKeychain();

return await githubClient.User.Current();
return (await githubClient.User.Current()).ToGitHubUser();
}
catch (Exception ex)
{
Expand Down Expand Up @@ -311,6 +315,18 @@ private async Task ValidateKeychain()
}
}

class GitHubUser
{
public string Name { get; set; }
public string Login { get; set; }
}

class GitHubRepository
{
public string Name { get; set; }
public string CloneUrl { get; set; }
}

class ApiClientException : Exception
{
public ApiClientException()
Expand Down
6 changes: 3 additions & 3 deletions src/GitHub.Api/Application/IApiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ interface IApiClient
{
HostAddress HostAddress { get; }
UriString OriginalUrl { get; }
Task CreateRepository(NewRepository newRepository, Action<Octokit.Repository, Exception> callback, string organization = null);
Task GetOrganizations(Action<IList<Organization>> onSuccess, Action<Exception> onError = null);
Task CreateRepository(NewRepository newRepository, Action<GitHubRepository, Exception> callback, string organization = null);
Task GetOrganizations(Action<Organization[]> onSuccess, Action<Exception> onError = null);
Task Login(string username, string password, Action<LoginResult> need2faCode, Action<bool, string> result);
Task ContinueLogin(LoginResult loginResult, string code);
Task<bool> LoginAsync(string username, string password, Func<LoginResult, string> need2faCode);
Task Logout(UriString host);
Task GetCurrentUser(Action<Octokit.User> callback);
Task GetCurrentUser(Action<GitHubUser> callback);
Task ValidateCurrentUser(Action onSuccess, Action<Exception> onError = null);
}
}
21 changes: 21 additions & 0 deletions src/GitHub.Api/Application/OctokitExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace GitHub.Unity
{
static class OctokitExtensions
{
public static GitHubUser ToGitHubUser(this Octokit.User user)
{
return new GitHubUser() {
Name = user.Name,
Login = user.Login,
};
}

public static GitHubRepository ToGitHubRepository(this Octokit.Repository repository)
{
return new GitHubRepository {
Name = repository.Name,
CloneUrl = repository.CloneUrl
};
}
}
}
8 changes: 8 additions & 0 deletions src/GitHub.Api/Application/Organization.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace GitHub.Unity
{
class Organization
{
public string Name { get; set; }
public string Login { get; set; }
}
}
2 changes: 2 additions & 0 deletions src/GitHub.Api/GitHub.Api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@
<Compile Include="Application\ApplicationInfo.cs" />
<Compile Include="Application\LoginResult.cs" />
<Compile Include="Application\AppConfiguration.cs" />
<Compile Include="Application\OctokitExtensions.cs" />
<Compile Include="Application\Organization.cs" />
<Compile Include="Extensions\ListExtensions.cs" />
<Compile Include="Git\Tasks\GitLfsVersionTask.cs" />
<Compile Include="Git\Tasks\GitVersionTask.cs" />
Expand Down
14 changes: 7 additions & 7 deletions src/UnityExtension/Assets/Editor/GitHub.Unity/UI/PublishView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class PublishView : Subview

[SerializeField] private string username;
[SerializeField] private string[] owners = { OwnersDefaultText };
[SerializeField] private IList<Organization> organizations;
[SerializeField] private string[] publishOwners;
[SerializeField] private int selectedOwner;
[SerializeField] private string repoName = String.Empty;
[SerializeField] private string repoDescription = "";
Expand Down Expand Up @@ -67,7 +67,7 @@ public IApiClient Client
public override void OnEnable()
{
base.OnEnable();
ownersNeedLoading = organizations == null && !isBusy;
ownersNeedLoading = publishOwners == null && !isBusy;
}

public override void OnDataUpdate()
Expand Down Expand Up @@ -106,14 +106,14 @@ private void LoadOwners()

Client.GetOrganizations(orgs =>
{
organizations = orgs;
Logger.Trace("Loaded {0} Owners", organizations.Count);
Logger.Trace("Loaded {0} Owners", orgs.Length);

var organizationLogins = organizations
publishOwners = orgs
.OrderBy(organization => organization.Login)
.Select(organization => organization.Login);
.Select(organization => organization.Login)
.ToArray();

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

isBusy = false;
}, exception =>
Expand Down