UnityGame/Library/PackageCache/com.unity.collab-proxy/Editor/PlasticSCM/Configuration/AutoConfig.cs
2024-10-27 10:53:47 +03:00

77 lines
2.7 KiB
C#

using System;
using Codice.Client.Common;
using Codice.CM.Common;
using Codice.LogWrapper;
using PlasticGui;
using PlasticGui.WorkspaceWindow.Home;
using Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome;
using Unity.PlasticSCM.Editor.WebApi;
using UnityEngine;
namespace Unity.PlasticSCM.Editor.Configuration
{
internal static class AutoConfig
{
internal static TokenExchangeResponse PlasticCredentials(
string unityAccessToken,
string serverName)
{
SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded();
var startTick = Environment.TickCount;
var tokenExchangeResponse = WebRestApiClient.PlasticScm.TokenExchange(unityAccessToken);
mLog.DebugFormat("TokenExchange time {0} ms", Environment.TickCount - startTick);
if (tokenExchangeResponse == null)
{
var warning = PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeResponseNull);
mLog.Warn(warning);
Debug.LogWarning(warning);
return null;
}
if (tokenExchangeResponse.Error != null)
{
var warning = string.Format(
PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeResponseError),
tokenExchangeResponse.Error.Message, tokenExchangeResponse.Error.ErrorCode);
mLog.ErrorFormat(warning);
Debug.LogWarning(warning);
return tokenExchangeResponse;
}
if (string.IsNullOrEmpty(tokenExchangeResponse.AccessToken))
{
var warning = string.Format(
PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeAccessEmpty),
tokenExchangeResponse.User);
mLog.InfoFormat(warning);
Debug.LogWarning(warning);
return tokenExchangeResponse;
}
// This creates the client.conf if needed but doesn't overwrite it if it exists already,
// and it also updates the profiles.conf and tokens.conf with the new AccessToken
UserAccounts.SaveAccount(
serverName,
SEIDWorkingMode.SSOWorkingMode, // Hub sign-in working mode
tokenExchangeResponse.User,
tokenExchangeResponse.AccessToken,
null,
null,
null);
CloudEditionWelcomeWindow.SaveDefaultCloudServer(
serverName,
tokenExchangeResponse.User);
return tokenExchangeResponse;
}
static readonly ILog mLog = PlasticApp.GetLogger("AutoConfig");
}
}