using System.Collections.Generic; using System.IO; using System.Linq; using Google.Apis.Auth.OAuth2; using Google.Apis.Drive.v3; using Newtonsoft.Json; using TriflesGames.GDriveUtility.Editor; using TriflesGames.SDKManagement.Editor.Configuration; using UnityEditor; using UnityEngine; using File = Google.Apis.Drive.v3.Data.File; namespace TriflesGames.SDKManagement.Editor { public static class SDKUtils { public static DriveService CreateService(UserCredential credential) { return GDriveUtils.CreateService(SDKManagerConfigContainer.Instance.appName, credential); } public static IList GetSDKs(DriveService service) { var driveId = GDriveUtils.GetDriveId(service, SDKManagerConfigContainer.Instance.driveName); FilesResource.ListRequest listRequest = service.Files.List(); listRequest.PageSize = 10; listRequest.DriveId = driveId; listRequest.Corpora = "drive"; listRequest.SupportsAllDrives = true; listRequest.IncludeItemsFromAllDrives = true; listRequest.Q = $"mimeType='application/x-gzip' and trashed=false and '{SDKManagerConfigContainer.Instance.sdkFolderId}' in parents"; listRequest.Fields = "nextPageToken, files(id, name, version, mimeType, trashed)"; return listRequest.Execute().Files; } public static string DownloadTempUnityPackage(string fileId) { return GDriveUtils.DownloadTempFile(SDKManagerConfigContainer.Instance.appName, fileId, "unitypackage"); } public static SDKInfo GetInfo() { var dir = Path.GetDirectoryName(Info.INFO_FILE); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); AssetDatabase.Refresh(); } var asset = AssetDatabase.LoadAssetAtPath(Info.INFO_FILE); if (!asset) { asset = ScriptableObject.CreateInstance(); AssetDatabase.CreateAsset(asset, Info.INFO_FILE); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } return asset; } } }