internal static void JoinCloudServer( string cloudServer, string username, string accessToken) { SaveCloudServer.ToPlasticGuiConfig(cloudServer); SaveCloudServer.ToPlasticGuiConfigFile( cloudServer, GetPlasticConfigFileToSaveOrganization()); SaveCloudServer.ToPlasticGuiConfigFile( cloudServer, GetGluonConfigFileToSaveOrganization()); KnownServers.ServersFromCloud.InitializeForWindows( PlasticGuiConfig.Get().Configuration.DefaultCloudServer); CloudEditionWelcome.WriteToTokensConf( cloudServer, username, accessToken); SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded(); if (sAutoLogin) { ClientConfigData clientConfigData = ConfigurationChecker.GetClientConfigData(); clientConfigData.WorkspaceServer = cloudServer; clientConfigData.WorkingMode = SEIDWorkingMode.SSOWorkingMode.ToString(); clientConfigData.SecurityConfig = username; ClientConfig.Get().Save(clientConfigData); GetWindow <PlasticWindow>().GetWelcomeView().autoLoginState = AutoLogin.State.OrganizationChoosed; } }
internal static TokenExchangeResponse PlasticCredentials( string unityAccessToken, string serverName, string projectPath) { SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded(); bool isClientConfigConfigured = ClientConfig.IsConfigured(); if (!isClientConfigConfigured) { ConfigureClientConf.FromUnityAccessToken( unityAccessToken, serverName, projectPath); } TokenExchangeResponse tokenExchangeResponse = WebRestApiClient. PlasticScm.TokenExchange(unityAccessToken); if (tokenExchangeResponse.Error != null) { return(tokenExchangeResponse); } CloudEditionWelcomeWindow.JoinCloudServer( serverName, tokenExchangeResponse.User, tokenExchangeResponse.AccessToken); if (!isClientConfigConfigured) { return(tokenExchangeResponse); } ConfigureProfile.ForServerIfNeeded( serverName, tokenExchangeResponse.User); return(tokenExchangeResponse); }
void DownloadRepository(object state) { DownloadRepositoryParameters parameters = (DownloadRepositoryParameters)state; try { IPlasticWebRestApi restApi = new PlasticWebRestApi(); string defaultCloudAlias = restApi.GetDefaultCloudAlias(); RepositorySpec repSpec = BuildRepSpec( parameters.CloudRepository, parameters.CloudOrganization, defaultCloudAlias); // we just download a cloud project, // so let's assume we're going to use Cloud Edition SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded(); if (!ClientConfig.IsConfigured()) { AutoConfigClientConf.FromUnityAccessToken( parameters.AccessToken, repSpec, parameters.ProjectPath); } if (WorkspaceExists(parameters.ProjectPath)) { // each domain reload, the package is reloaded. // way need to check if we already downloaded it return; } mDisplayProgress = true; WorkspaceInfo wkInfo = CreateWorkspace( repSpec, parameters.ProjectPath); mLog.DebugFormat("Created workspace {0} on {1}", wkInfo.Name, wkInfo.ClientPath); AutoLogin autoLogin = new AutoLogin(); autoLogin.ExchangeTokens(parameters.AccessToken); CloudEditionWelcomeWindow.JoinOrganization(parameters.CloudOrganization, AutoLogin.sAccessToken, AutoLogin.sUserName); ClientConfigData clientConfigData = ClientConfig.Get().GetClientConfigData(); clientConfigData.WorkspaceServer = parameters.CloudOrganization; ClientConfig.Get().Save(clientConfigData); Plastic.API.Update( wkInfo.ClientPath, UpdateFlags.None, null, mUpdateNotifier); } catch (Exception ex) { LogException(ex); UnityEngine.Debug.LogErrorFormat( PlasticLocalization.GetString(PlasticLocalization.Name.ErrorDownloadingCloudProject), ex.Message); mOperationFailed = true; } finally { mOperationFinished = true; } }
internal void DownloadRepositoryToPathIfNeeded( string cloudRepository, string cloudOrganization, string projectPath) { var allowAutoRefreshFeature = new AssetDatabase().GetType().GetMethod("DisallowAutoRefresh") != null; #if allowAutoRefreshFeature AssetDatabase.DisallowAutoRefresh(); #endif try { BuildProgressSpeedAndRemainingTime.ProgressData progressData = new BuildProgressSpeedAndRemainingTime.ProgressData(DateTime.Now); ThreadPool.QueueUserWorkItem( DownloadRepository, new DownloadRepositoryParameters() { CloudOrganization = cloudOrganization, CloudRepository = cloudRepository, ProjectPath = projectPath, AccessToken = CloudProjectSettings.accessToken }); while (!mOperationFinished) { if (mDisplayProgress) { DisplayProgress( mUpdateNotifier.GetUpdateStatus(), progressData, cloudRepository); } Thread.Sleep(150); } } finally { EditorUtility.ClearProgressBar(); #if allowAutoRefreshFeature AssetDatabase.AllowAutoRefresh(); #endif DisableCollabIfEnabled(projectPath); RefreshAsset.UnityAssetDatabase(); if (!mOperationFailed) { // we just download a cloud project, // so let's assume we're going to use Cloud Edition SetupUnityEditionToken.ToCloud(); ShowWindow.Plastic(); } } }
void DownloadRepository(object state) { DownloadRepositoryParameters parameters = (DownloadRepositoryParameters)state; try { if (FindWorkspace.HasWorkspace(parameters.ProjectPath)) { // each domain reload, the package is reloaded. // way need to check if we already downloaded it return; } mDisplayProgress = true; IPlasticWebRestApi restApi = new PlasticWebRestApi(); string defaultCloudAlias = restApi.GetDefaultCloudAlias(); RepositorySpec repSpec = BuildRepSpec( parameters.CloudRepository, parameters.CloudOrganization, defaultCloudAlias); // we just download a cloud project, // so let's assume we're going to use Cloud Edition SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded(); if (!ClientConfig.IsConfigured()) { AutoConfigClientConf.FromUnityAccessToken( parameters.AccessToken, repSpec.Server, parameters.ProjectPath); } TokenExchangeResponse tokenExchangeResponse = WebRestApiClient. PlasticScm.TokenExchange(parameters.AccessToken); if (tokenExchangeResponse.Error != null) { mOperationFailed = true; UnityEngine.Debug.LogErrorFormat( PlasticLocalization.GetString(PlasticLocalization.Name.ErrorDownloadingCloudProject), string.Format("Unable to get TokenExchangeResponse: {0} [code {1}]", tokenExchangeResponse.Error.Message, tokenExchangeResponse.Error.ErrorCode)); return; } CloudEditionWelcomeWindow.JoinCloudServer( repSpec.Server, tokenExchangeResponse.User, tokenExchangeResponse.AccessToken); ClientConfigData clientConfigData = ClientConfig.Get().GetClientConfigData(); clientConfigData.WorkspaceServer = repSpec.Server; ClientConfig.Get().Save(clientConfigData); WorkspaceInfo wkInfo = CreateWorkspace( repSpec, parameters.ProjectPath); mLog.DebugFormat("Created workspace {0} on {1}", wkInfo.Name, wkInfo.ClientPath); PlasticGui.Plastic.API.Update( wkInfo.ClientPath, UpdateFlags.None, null, mUpdateNotifier); } catch (Exception ex) { LogException(ex); UnityEngine.Debug.LogErrorFormat( PlasticLocalization.GetString(PlasticLocalization.Name.ErrorDownloadingCloudProject), ex.Message); mOperationFailed = true; } finally { mOperationFinished = true; } }
void LaunchMigration( string unityAccessToken, string projectPath, string organizationName, RepId repId, long changesetId, long branchId, Action afterWorkspaceMigratedAction, IProgressControls progressControls) { string serverName = string.Format( "{0}@cloud", organizationName); progressControls.ShowProgress( "Migrating project to Plastic SCM..."); TokenExchangeResponse tokenExchangeResponse = null; WorkspaceInfo workspaceInfo = null; IThreadWaiter waiter = ThreadWaiter.GetWaiter(10); waiter.Execute( /*threadOperationDelegate*/ delegate { // we just migrate a cloud project, // so let's assume we're going to use Cloud Edition SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded(); if (!ClientConfig.IsConfigured()) { AutoConfigClientConf.FromUnityAccessToken( unityAccessToken, serverName, projectPath); } tokenExchangeResponse = WebRestApiClient. PlasticScm.TokenExchange(unityAccessToken); if (tokenExchangeResponse.Error != null) { return; } CloudEditionWelcomeWindow.JoinCloudServer( serverName, tokenExchangeResponse.User, tokenExchangeResponse.AccessToken); RepositoryInfo repInfo = new BaseCommandsImpl(). GetRepositoryInfo(repId, serverName); if (repInfo == null) { return; } repInfo.SetExplicitServer(serverName); workspaceInfo = CreateWorkspaceFromCollab.Create( projectPath, repInfo.Name, repInfo, changesetId, branchId, new CreateWorkspaceFromCollab.Progress()); }, /*afterOperationDelegate*/ delegate { progressControls.HideProgress(); if (waiter.Exception != null) { DisplayException(progressControls, waiter.Exception); return; } if (tokenExchangeResponse.Error != null) { mLog.ErrorFormat( "Unable to get TokenExchangeResponse: {0} [code {1}]", tokenExchangeResponse.Error.Message, tokenExchangeResponse.Error.ErrorCode); } if (tokenExchangeResponse.Error != null || workspaceInfo == null) { progressControls.ShowError( "Failed to migrate the project to Plastic SCM"); return; } progressControls.ShowSuccess( "The project migration to Plastic SCM is completed successfully"); mIsMigrationCompleted = true; afterWorkspaceMigratedAction(); }); }