public PostNotifyFinishedUploadService( string accessToken, VenueID venueId, UploadRequestID uploadRequestId, bool isPublish, Action <VenueUploadRequestCompletionResponse> onSuccess = null, Action <Exception> onError = null ) { this.accessToken = accessToken; this.venueId = venueId; this.uploadRequestId = uploadRequestId; this.isPublish = isPublish; this.onSuccess = onSuccess; this.onError = onError; }
public UploadAssetService( string accessToken, string fileType, string filePath, UploadRequestID uploadRequestId, Action <AssetUploadPolicy> onSuccess = null, Action <Exception> onError = null ) { this.accessToken = accessToken; this.filePath = filePath; this.uploadRequestId = uploadRequestId; this.onSuccess = onSuccess; this.onError = onError; var fileInfo = new FileInfo(filePath); payload = new PostUploadAssetPolicyPayload { fileType = fileType, fileName = fileInfo.Name, fileSize = fileInfo.Length }; }
static void AssetUpload( string accessToken, string fileType, string filePath, UploadRequestID uploadRequestId) { var fileInfo = new FileInfo(filePath); var payload = new PostUploadAssetPolicyPayload { fileType = fileType, fileName = fileInfo.Name, fileSize = fileInfo.Length }; var url = $"{Constants.VenueApiBaseUrl}/v1/upload/venue/{uploadRequestId.Value}/policies"; Debug.LogFormat("Calling RPC: {0}", url); var webRequest = ClusterApiUtil.CreateUnityWebRequest(accessToken, url, UnityWebRequest.kHttpVerbPOST); webRequest.downloadHandler = new DownloadHandlerBuffer(); webRequest.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(JsonUtility.ToJson(payload))); webRequest.SendWebRequest(); while (!webRequest.isDone) { Thread.Sleep(50); } if (webRequest.isNetworkError) { throw new Exception(webRequest.error); } var responseText = webRequest.downloadHandler.text; Debug.LogFormat("Calling RPC ResponseText: {0}", responseText); var policy = JsonConvert.DeserializeObject <AssetUploadPolicy>(responseText); var fileBytes = ReadFile(filePath); if (policy == null || fileBytes == null) { throw new Exception("unknown error"); } var form = BuildForm(fileBytes, policy); var uploadFileWebRequest = UnityWebRequest.Post(policy.uploadUrl, form); uploadFileWebRequest.chunkedTransfer = false; uploadFileWebRequest.SendWebRequest(); while (!uploadFileWebRequest.isDone) { Thread.Sleep(50); } if (uploadFileWebRequest.isNetworkError) { throw new Exception(uploadFileWebRequest.error); } if (uploadFileWebRequest.isHttpError) { throw new Exception(uploadFileWebRequest.downloadHandler.text); } Debug.Log($"Success Upload {policy.fileType}"); }
IEnumerator UploadVenue() { isProcessing = true; if (!uploadStatus[UploadState.PreProcess]) { var postUploadRequestProcess = false; var uploadRequest = new PostUploadRequestService( accessToken, venue.VenueId, request => { Debug.Log($"make new upload request, Request ID : {request.UploadRequestId}"); uploadRequestId = request.UploadRequestId; postUploadRequestProcess = true; uploadStatus[UploadState.PreProcess] = true; }, exception => { HandleError(exception); postUploadRequestProcess = true; } ); uploadRequest.Run(); while (!postUploadRequestProcess) { yield return(null); } } if (!uploadStatus[UploadState.PreProcess]) { yield break; } var uploadAssetServiceList = new List <UploadAssetService>(); var winAssetUploadProcess = uploadStatus[UploadState.Windows]; var macAssetUploadProcess = uploadStatus[UploadState.Mac]; var androidAssetUploadProcess = uploadStatus[UploadState.Android]; var iosAssetUploadProcess = uploadStatus[UploadState.IOS]; // var unityPackageUploadProcess = uploadStatus[UploadState.UnityPackage]; if (!uploadStatus[UploadState.Windows]) { var winAssetUploadService = new UploadAssetService( accessToken, "assetbundle/win", EditorPrefsUtils.LastBuildWin, uploadRequestId, request => { Debug.Log($"success win asset upload, uploaded url : {request.url}"); winAssetUploadProcess = true; uploadStatus[UploadState.Windows] = true; }, exception => { HandleError(exception); winAssetUploadProcess = true; } ); uploadAssetServiceList.Add(winAssetUploadService); } if (!uploadStatus[UploadState.Mac]) { var macAssetUploadService = new UploadAssetService( accessToken, "assetbundle/mac", EditorPrefsUtils.LastBuildMac, uploadRequestId, request => { Debug.Log($"success mac asset upload, uploaded url : {request.url}"); macAssetUploadProcess = true; uploadStatus[UploadState.Mac] = true; }, exception => { HandleError(exception); macAssetUploadProcess = true; } ); uploadAssetServiceList.Add(macAssetUploadService); } if (!uploadStatus[UploadState.Android]) { var androidAssetUploadService = new UploadAssetService( accessToken, "assetbundle/android", EditorPrefsUtils.LastBuildAndroid, uploadRequestId, request => { Debug.Log($"success android asset upload, uploaded url : {request.url}"); androidAssetUploadProcess = true; uploadStatus[UploadState.Android] = true; }, exception => { HandleError(exception); androidAssetUploadProcess = true; } ); uploadAssetServiceList.Add(androidAssetUploadService); } if (!uploadStatus[UploadState.IOS]) { var iosAssetUploadService = new UploadAssetService( accessToken, "assetbundle/ios", EditorPrefsUtils.LastBuildIOS, uploadRequestId, request => { Debug.Log($"success ios asset upload, uploaded url : {request.url}"); iosAssetUploadProcess = true; uploadStatus[UploadState.IOS] = true; }, exception => { HandleError(exception); iosAssetUploadProcess = true; } ); uploadAssetServiceList.Add(iosAssetUploadService); } // if (!uploadStatus[UploadState.UnityPackage]) // { // var unityPackageUploadService = new UploadAssetService( // accessToken, // "unitypackage", // EditorPrefsUtils.LastExportPackage, // uploadRequestId, // request => // { // Debug.Log($"success unitypackage upload, uploaded url : {request.url}"); // unityPackageUploadProcess = true; // uploadStatus[UploadState.UnityPackage] = true; // }, // exception => // { // HandleError(exception); // unityPackageUploadProcess = true; // } // ); // uploadAssetServiceList.Add(unityPackageUploadService); // } uploadAssetServiceList.ForEach(x => x.Run()); //while (!winAssetUploadProcess || !macAssetUploadProcess || !androidAssetUploadProcess || !unityPackageUploadProcess) while (!winAssetUploadProcess || !macAssetUploadProcess || !androidAssetUploadProcess || !iosAssetUploadProcess) { yield return(null); } if (!uploadStatus[UploadState.Windows] || !uploadStatus[UploadState.Mac] || !uploadStatus[UploadState.Android] || !uploadStatus[UploadState.IOS]) { yield break; } if (!uploadStatus[UploadState.PostProcess]) { var postNotifyFinishProcess = false; var notifyFinishedRequest = new PostNotifyFinishedUploadService( accessToken, venue.VenueId, uploadRequestId, false, request => { Debug.Log($"notify finished upload request, Request ID : {request.UploadRequestId}"); uploadRequestId = null; postNotifyFinishProcess = true; uploadStatus[UploadState.PostProcess] = true; completionResponse = request; }, exception => { HandleError(exception); postNotifyFinishProcess = true; } ); notifyFinishedRequest.Run(); while (!postNotifyFinishProcess) { yield return(null); } } if (!uploadStatus[UploadState.PostProcess]) { yield break; } onSuccess?.Invoke(completionResponse); isProcessing = false; }