Created unity project

This commit is contained in:
2024-12-07 20:55:50 +01:00
parent 539250d964
commit 54fe327198
13758 changed files with 865324 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
using System.ComponentModel;
using Unity.Plastic.Newtonsoft.Json;
using PlasticGui.WebApi.Responses;
namespace Unity.PlasticSCM.Editor.WebApi
{
/// <summary>
/// Response to credentials request.
/// Internal usage. This isn't a public API.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public class CredentialsResponse
{
/// <summary>
/// Error caused by the request.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("error")]
public ErrorResponse.ErrorFields Error { get; set; }
/// <summary>
/// Type of the token.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public enum TokenType : int
{
/// <summary>
/// Password token.
/// </summary>
Password = 0,
/// <summary>
/// Bearer token.
/// </summary>
Bearer = 1,
}
/// <summary>
/// Get the type of the token.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonIgnore]
public TokenType Type
{
get { return (TokenType)TokenTypeValue; }
}
/// <summary>
/// The user's email.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("email")]
public string Email;
/// <summary>
/// The credential's token.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("token")]
public string Token;
/// <summary>
/// The token type represented as an integer.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("tokenTypeValue")]
public int TokenTypeValue;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d1c46ccb760d06146a24b7e265e19566
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
using System.ComponentModel;
using Unity.Plastic.Newtonsoft.Json;
using PlasticGui.WebApi.Responses;
namespace Unity.PlasticSCM.Editor.WebApi
{
/// <summary>
/// Response to current user admin check request.
/// Internal usage. This isn't a public API.
/// </summary>
public class CurrentUserAdminCheckResponse
{
/// <summary>
/// Error caused by the request.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("error")]
public ErrorResponse.ErrorFields Error { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("isCurrentUserAdmin")]
public bool IsCurrentUserAdmin { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("organizationName")]
public string OrganizationName { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 363c1190d7979084c84a0421cedb3a51
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using Unity.Plastic.Newtonsoft.Json;
namespace Unity.PlasticSCM.Editor.WebApi
{
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
public class SubscriptionDetailsResponse
{
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("createdAt")]
public DateTime CreatedAt { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("subscriptionType")]
public string ProductType { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("subscriptionSource")]
public string OrderSource { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("genesisOrgId")]
public string GenesisOrgId { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("plasticOrganizationName")]
public string OrganizationName { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("readonlyStatus")]
public string ReadonlyStatus { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("isAdmin")]
public bool IsAdmin { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("isOwner")]
public bool IsOwner { get; set; }
// Internal usage. This isn't a public API.
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("extraData")]
public Dictionary<string, object> ExtraData { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 63860c9f5f91cbb4ea813deafa1327a0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,42 @@
using System.ComponentModel;
using Unity.Plastic.Newtonsoft.Json;
using PlasticGui.WebApi.Responses;
namespace Unity.PlasticSCM.Editor.WebApi
{
/// <summary>
/// Response to token exchange request.
/// Internal usage. This isn't a public API.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public class TokenExchangeResponse
{
/// <summary>
/// Error caused by the request.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("error")]
public ErrorResponse.ErrorFields Error { get; set; }
/// <summary>
/// The user's username.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("user")]
public string User { get; set; }
/// <summary>
/// The access token.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("accessToken")]
public string AccessToken { get; set; }
/// <summary>
/// The refresh token.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
[JsonProperty("refreshToken")]
public string RefreshToken { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4932f8b3d8c26804bb16dc5cb5b766ce
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,193 @@
using System;
using System.IO;
using System.Net;
using Unity.Plastic.Newtonsoft.Json;
using Codice.Client.Common.WebApi;
using Codice.CM.Common;
using Codice.LogWrapper;
using PlasticGui.WebApi.Responses;
namespace Unity.PlasticSCM.Editor.WebApi
{
internal static class WebRestApiClient
{
internal static class PlasticScm
{
internal static TokenExchangeResponse TokenExchange(string unityAccessToken)
{
Uri endpoint = mWebApiUris.GetFullUri(
string.Format(TokenExchangeEndpoint, unityAccessToken));
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpoint);
request.Method = "GET";
request.ContentType = "application/json";
return GetResponse<TokenExchangeResponse>(request);
}
catch (Exception ex)
{
mLog.ErrorFormat(
"Unable to exchange tokens '{0}': {1}",
endpoint.ToString(), ex.Message);
mLog.DebugFormat(
"StackTrace:{0}{1}",
Environment.NewLine, ex.StackTrace);
return null;
}
}
internal static NewVersionResponse GetLastVersion(Edition plasticEdition)
{
Uri endpoint = mWebApiUris.GetFullUri(
WebApiEndpoints.LastVersion.NewVersion,
"9.0.0.0",
WebApiEndpoints.LastVersion.GetEditionString(plasticEdition),
WebApiEndpoints.LastVersion.GetPlatformString());
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpoint);
request.Method = "GET";
request.ContentType = "application/json";
return GetResponse<NewVersionResponse>(request);
}
catch (Exception ex)
{
mLog.ErrorFormat(
"Unable to retrieve new versions from '{0}': {1}",
endpoint.ToString(), ex.Message);
mLog.DebugFormat(
"StackTrace:{0}{1}",
Environment.NewLine, ex.StackTrace);
return null;
}
}
internal static CurrentUserAdminCheckResponse IsUserAdmin(
string organizationName,
string authToken)
{
Uri endpoint = mWebApiUris.GetFullUri(
IsUserAdminEnpoint,
organizationName);
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpoint);
request.Method = "GET";
request.ContentType = "application/json";
string authenticationToken = "Basic " + authToken;
request.Headers.Add(
HttpRequestHeader.Authorization, authenticationToken);
return GetResponse<CurrentUserAdminCheckResponse>(request);
}
catch (Exception ex)
{
mLog.ErrorFormat(
"Unable to retrieve is user admin '{0}': {1}",
endpoint.ToString(), ex.Message);
mLog.DebugFormat(
"StackTrace:{0}{1}",
Environment.NewLine, ex.StackTrace);
return new CurrentUserAdminCheckResponse
{
Error = BuildLoggedErrorFields(ex, endpoint)
};
}
}
internal static SubscriptionDetailsResponse GetSubscriptionDetails(
string organizationName,
string authToken)
{
Uri endpoint = mWebApiUris.GetFullUri(
SubscriptionDetailsEndpoint,
organizationName);
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpoint);
request.Method = "GET";
request.ContentType = "application/json";
string authenticationToken = "Basic " + authToken;
request.Headers.Add(
HttpRequestHeader.Authorization, authenticationToken);
return GetResponse<SubscriptionDetailsResponse>(request);
}
catch (Exception ex)
{
mLog.ErrorFormat(
"Unable to retrieve subscription details '{0}': {1}",
endpoint.ToString(), ex.Message);
mLog.DebugFormat(
"StackTrace:{0}{1}",
Environment.NewLine, ex.StackTrace);
return null;
}
}
const string TokenExchangeEndpoint = "api/oauth/unityid/exchange/{0}";
const string IsUserAdminEnpoint = "api/cloud/organizations/{0}/is-user-admin";
const string SubscriptionDetailsEndpoint = "api/cloud/organizations/{0}/subscription-details";
static readonly PlasticWebApiUris mWebApiUris = PlasticWebApiUris.BuildDefault();
}
static TRes GetResponse<TRes>(WebRequest request)
{
using (WebResponse response = request.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string json = reader.ReadToEnd();
if (string.IsNullOrEmpty(json))
return default(TRes);
return JsonConvert.DeserializeObject<TRes>(json);
}
}
static ErrorResponse.ErrorFields BuildLoggedErrorFields(
Exception ex, Uri endpoint)
{
LogException(ex, endpoint);
return new ErrorResponse.ErrorFields
{
ErrorCode = ErrorCodes.ClientError,
Message = ex.Message
};
}
static void LogException(Exception ex, Uri endpoint)
{
mLog.ErrorFormat(
"There was an error while calling '{0}': {1}",
endpoint.ToString(), ex.Message);
mLog.DebugFormat(
"StackTrace:{0}{1}",
Environment.NewLine, ex.StackTrace);
}
static readonly ILog mLog = PlasticApp.GetLogger("WebRestApiClient");
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e57a1c5d3e1c8844eb3893fed51c9727
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: