app center;增加發送ping的秒

This commit is contained in:
Caiyanpeng committed 2021-11-12 16:21:13 +08:00
1 parent 1bd1ffdb5a
commit d754ff3b15
719 files changed
+34172 -2875

No files matched your search

@@ -0,0 +1,165 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine.Networking;
namespace AppCenterEditor
{
public class AppCenterEditorHttp : Editor
{
internal static void MakeDownloadCall(string url, Action<string> resultCallback)
{
EdExLogger.LoggerInstance.LogWithTimeStamp("Downloading file: " + url);
var www = UnityWebRequest.Get(url);
AppCenterEditor.RaiseStateUpdate(AppCenterEditor.EdExStates.OnHttpReq, url, AppCenterEditorHelper.MSG_SPIN_BLOCK);
Coroutiner.StartCoroutine(PostDownload(www, response =>
{
resultCallback(WriteResultFile(url, response));
}, AppCenterEditorHelper.SharedErrorCallback));
}
internal static void MakeDownloadCall(IEnumerable<string> urls, Action<IEnumerable<string>> resultCallback)
{
EdExLogger.LoggerInstance.LogWithTimeStamp("Downloading files: " + string.Join(", ", urls.ToArray()));
var wwws = new List<UnityWebRequest>();
var downloadRequests = new List<DownloadRequest>();
foreach (var url in urls)
{
var www = UnityWebRequest.Get(url);
wwws.Add(www);
downloadRequests.Add(new DownloadRequest(url, www));
}
AppCenterEditor.RaiseStateUpdate(AppCenterEditor.EdExStates.OnHttpReq, "Downloading files", AppCenterEditorHelper.MSG_SPIN_BLOCK);
Coroutiner.StartCoroutine(DownloadFiles(downloadRequests, resultCallback, AppCenterEditorHelper.SharedErrorCallback));
}
internal static void MakeGitHubApiCall(string url, Action<string> resultCallback)
{
var www = UnityWebRequest.Get(url);
Coroutiner.StartCoroutine(Post(www, response => { OnGitHubSuccess(resultCallback, response); }, AppCenterEditorHelper.SharedErrorCallback));
}
private static IEnumerator Post(UnityWebRequest www, Action<string> callBack, Action<string> errorCallback)
{
yield return www.SendWebRequest();
if (!string.IsNullOrEmpty(www.error))
{
errorCallback(www.error);
}
else
{
callBack(www.downloadHandler.text);
}
}
private static IEnumerator PostDownload(UnityWebRequest www, Action<byte[]> callBack, Action<string> errorCallback)
{
yield return www.SendWebRequest();
if (!string.IsNullOrEmpty(www.error))
{
errorCallback(www.error);
}
else
{
callBack(www.downloadHandler.data);
}
}
private static IEnumerator DownloadFiles(IEnumerable<DownloadRequest> downloadRequests, Action<IEnumerable<string>> resultCallback, Action<string> errorCallback)
{
var downloadedFiles = new List<string>();
foreach (var downloadRequest in downloadRequests)
{
yield return downloadRequest.WWW.SendWebRequest();
if (!downloadRequest.WWW.isHttpError && !downloadRequest.WWW.isNetworkError)
{
var downloadedFile = WriteResultFile(downloadRequest.Url, downloadRequest.WWW.downloadHandler.data);
downloadedFiles.Add(downloadedFile);
}
else
{
errorCallback(downloadRequest.WWW.error);
yield break;
}
}
resultCallback(downloadedFiles);
}
private static void OnGitHubSuccess(Action<string> resultCallback, string response)
{
if (resultCallback == null)
{
return;
}
var jsonResponse = JsonWrapper.DeserializeObject<List<object>>(response);
if (jsonResponse == null || jsonResponse.Count == 0)
{
return;
}
// list seems to come back in ascending order (oldest -> newest)
var latestSdkTag = (JsonObject)jsonResponse[jsonResponse.Count - 1];
object tag;
if (latestSdkTag.TryGetValue("ref", out tag))
{
var startIndex = tag.ToString().LastIndexOf('/') + 1;
var length = tag.ToString().Length - startIndex;
resultCallback(tag.ToString().Substring(startIndex, length));
}
else
{
resultCallback(null);
}
}
private static string WriteResultFile(string url, byte[] response)
{
AppCenterEditor.RaiseStateUpdate(AppCenterEditor.EdExStates.OnHttpRes, url);
string fileName;
if (url.IndexOf("AppCenterEditorExtensions-v") > -1)
{
fileName = AppCenterEditorHelper.EDEX_UPGRADE_PATH;
}
else if (url.IndexOf("AppCenterAnalytics-v") > -1)
{
fileName = AppCenterEditorHelper.ANALYTICS_SDK_DOWNLOAD_PATH;
}
else if (url.IndexOf("AppCenterCrashes-v") > -1)
{
fileName = AppCenterEditorHelper.CRASHES_SDK_DOWNLOAD_PATH;
}
else if (url.IndexOf("AppCenterDistribute-v") > -1)
{
fileName = AppCenterEditorHelper.DISTRIBUTE_SDK_DOWNLOAD_PATH;
}
else
{
fileName = AppCenterEditorHelper.EDEX_PACKAGES_PATH;
}
var fileSaveLocation = AppCenterEditorHelper.EDEX_ROOT + fileName;
var fileSaveDirectory = Path.GetDirectoryName(fileSaveLocation);
EdExLogger.LoggerInstance.LogWithTimeStamp("Saving " + response.Length + " bytes to: " + fileSaveLocation);
if (!Directory.Exists(fileSaveDirectory))
{
Directory.CreateDirectory(fileSaveDirectory);
}
File.WriteAllBytes(fileSaveLocation, response);
return fileSaveLocation;
}
private class DownloadRequest
{
public string Url { get; private set; }
public UnityWebRequest WWW { get; private set; }
public DownloadRequest(string url, UnityWebRequest www)
{
Url = url;
WWW = www;
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0adb37d42167d491e872d983c8736732
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,9 @@
namespace AppCenterEditor
{
public class Constants
{
public const string UnknownVersion = "Unknown";
public const string WrapperSdkClassName = "Microsoft.AppCenter.Unity.WrapperSdk";
public const string WrapperSdkVersionFieldName = "WrapperSdkVersion";
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9834441b45590434291881207fa97dd9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,12 @@
namespace AppCenterEditor
{
public interface ISerializer
{
T DeserializeObject<T>(string json);
T DeserializeObject<T>(string json, object jsonSerializerStrategy);
object DeserializeObject(string json);
string SerializeObject(object json);
string SerializeObject(object json, object jsonSerializerStrategy);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 573b77bd61fac61499edeaadad015476
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,45 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace AppCenterEditor
{
public class JsonWrapper
{
private static ISerializer _instance = new SimpleJsonInstance();
/// <summary>
/// Use this property to override the Serialization for the SDK.
/// </summary>
public static ISerializer Instance
{
get { return _instance; }
set { _instance = value; }
}
public static T DeserializeObject<T>(string json)
{
return _instance.DeserializeObject<T>(json);
}
public static T DeserializeObject<T>(string json, object jsonSerializerStrategy)
{
return _instance.DeserializeObject<T>(json, jsonSerializerStrategy);
}
public static object DeserializeObject(string json)
{
return _instance.DeserializeObject(json);
}
public static string SerializeObject(object json)
{
return _instance.SerializeObject(json);
}
public static string SerializeObject(object json, object jsonSerializerStrategy)
{
return _instance.SerializeObject(json, jsonSerializerStrategy);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 92da912d9a571464e90d2d08c293f5ea
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using UnityEditor;
namespace AppCenterEditor
{
public static class PackagesInstaller
{
public static void ImportLatestSDK(IEnumerable<AppCenterSDKPackage> packagesToImport, string version, string existingSdkPath = null)
{
try
{
var downloadUrls = new List<string>();
foreach (var package in packagesToImport)
{
downloadUrls.Add(package.GetDownloadUrl(version));
}
AppCenterEditorHttp.MakeDownloadCall(downloadUrls, downloadedFiles =>
{
try
{
foreach (var file in downloadedFiles)
{
EdExLogger.LoggerInstance.LogWithTimeStamp("Importing package: " + file);
AssetDatabase.ImportPackage(file, false);
EdExLogger.LoggerInstance.LogWithTimeStamp("Deleting file: " + file);
FileUtil.DeleteFileOrDirectory(file);
}
AppCenterEditorPrefsSO.Instance.SdkPath = string.IsNullOrEmpty(existingSdkPath) ? AppCenterEditorHelper.DEFAULT_SDK_LOCATION : existingSdkPath;
//AppCenterEditorDataService.SaveEnvDetails();
EdExLogger.LoggerInstance.LogWithTimeStamp("App Center SDK install complete");
}
catch (Exception exception)
{
EdExLogger.LoggerInstance.LogError("Failed to import packages: " + exception);
}
finally
{
AppCenterEditorSDKTools.IsInstalling = false;
}
});
}
catch
{
AppCenterEditorSDKTools.IsInstalling = false;
throw;
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 49ddc3aac61e4af42bf36700ad5ccb45
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8bfd769747cb35a4ca40e4e9debf31c0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,34 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace AppCenterEditor
{
public class SimpleJsonInstance : ISerializer
{
public T DeserializeObject<T>(string json)
{
return AppCenterSimpleJson.DeserializeObject<T>(json);
}
public T DeserializeObject<T>(string json, object jsonSerializerStrategy)
{
return AppCenterSimpleJson.DeserializeObject<T>(json, (IJsonSerializerStrategy)jsonSerializerStrategy);
}
public object DeserializeObject(string json)
{
return AppCenterSimpleJson.DeserializeObject(json);
}
public string SerializeObject(object json)
{
return AppCenterSimpleJson.SerializeObject(json);
}
public string SerializeObject(object json, object jsonSerializerStrategy)
{
return AppCenterSimpleJson.SerializeObject(json, (IJsonSerializerStrategy)jsonSerializerStrategy);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 260fd54878fe79d42b8e3100b4bf98db
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: