app center;增加發送ping的秒
This commit is contained in:
1 parent
1bd1ffdb5a
commit
d754ff3b15
719 files changed
+34172
-2875
No files matched your search
+165
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -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);
|
||||
}
|
||||
}
|
||||
+11
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92da912d9a571464e90d2d08c293f5ea
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+50
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -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:
|
||||
+34
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 260fd54878fe79d42b8e3100b4bf98db
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in new issue
Block a user