arenos-nexus/Arenos Nexus/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Editor/OrganizationsInformation.cs
Daniel 2e704cae70 init
Init Commit Unity
2025-09-25 22:01:28 +02:00

112 lines
4.0 KiB
C#

using System;
using System.Collections.Generic;
using Codice.Client.Common;
using Codice.Client.Common.Threading;
using Codice.Client.Common.WebApi;
using Codice.Client.Common.WebApi.Responses;
using Codice.CM.Common;
using Codice.LogWrapper;
using PlasticGui;
using PlasticGui.WorkspaceWindow.Home;
namespace Unity.PlasticSCM.Editor
{
internal static class OrganizationsInformation
{
internal static bool IsUnityOrganization(string server)
{
string resolvedServer = ResolveServer.ToDisplayString(server);
return CloudServer.IsUnityOrganization(resolvedServer);
}
internal static void UpdateCloudOrganizationSlugsAsync(
IPlasticWebRestApi restApi,
IPlasticAPI plasticApi)
{
PlasticThreadPool.Run(delegate
{
try
{
OrganizationsResponse organizationResponse = restApi.GetCloudServers();
if (organizationResponse == null)
return;
if (organizationResponse.Error != null)
{
mLog.ErrorFormat(
"Unable to retrieve cloud organizations: {0} [code {1}]",
organizationResponse.Error.Message,
organizationResponse.Error.ErrorCode);
return;
}
UpdateCloudOrganizationSlugs.For(plasticApi, organizationResponse);
}
catch (Exception e)
{
ExceptionsHandler.LogException(typeof(OrganizationsInformation).Name, e);
}
});
}
internal static List<OrganizationInfo> FromServersOrdered(List<string> serverNames)
{
List<OrganizationInfo> organizationsInfo = new List<OrganizationInfo>();
foreach (var organizationServer in serverNames)
{
organizationsInfo.Add(FromServer(organizationServer));
}
organizationsInfo.Sort((x, y) =>
string.Compare(x.DisplayName, y.DisplayName, StringComparison.CurrentCulture));
return organizationsInfo;
}
internal static OrganizationInfo FromServer(string organizationServer)
{
return new OrganizationInfo(
CloudServer.GetOrganizationName(organizationServer),
ResolveServer.ToDisplayString(organizationServer),
organizationServer,
CloudServer.IsUnityOrganization(organizationServer) ?
OrganizationInfo.OrganizationType.Unity :
OrganizationInfo.OrganizationType.Cloud );
}
internal static string TryResolveServerFromInput(string userInputServer)
{
try
{
// This method talks to the cloud servers if needed, and can throw unexpected exceptions we need to control
return ResolveServer.FromUserInput(userInputServer, CmConnection.Get().UnityOrgResolver);
}
catch (Exception e)
{
mLog.ErrorFormat("Could not resolve the server {0}: {1}", userInputServer, e.Message);
return null;
}
}
internal static RepositorySpec TryResolveRepositorySpecFromInput(string userInputRepSpec)
{
try
{
// This method talks to the cloud servers if needed, and can throw unexpected exceptions we need to control
return new SpecGenerator().GenRepositorySpec(false, userInputRepSpec, CmConnection.Get().UnityOrgResolver);
}
catch (Exception e)
{
mLog.ErrorFormat("Could not resolve the repSpec {0}: {1}", userInputRepSpec, e.Message);
return null;
}
}
static readonly ILog mLog = PlasticApp.GetLogger("OrganizationsInformation");
}
}