/// <summary> /// Raises the upload file button click event. /// </summary> private void OnUploadFileButtonClick() { // Check to see if user is logged in. if (!demoUser.IsLoggedIn) { Debug.LogError(requiredLoginMessage); return; } #if UNITY_EDITOR try { // Explorer window prompt to select image. var path = EditorUtility.OpenFilePanel("Load Image File", "", ""); byte[] data = System.IO.File.ReadAllBytes(path); // Create a Moback File Object. demoMoBackFile = new MoBackFile(DemoTableName, data, demoFileName); } catch (Exception e) { // If no file selected, return. DisplayMessage("No File Selected."); Debug.LogError(e.Message); return; } #else demoMoBackFile = CreateMoBackFileObject(demoFileName); #endif StartCoroutine(UploadFile(demoMoBackFile)); }
/// <summary> /// Downloads the file from Moback server. /// </summary> /// <returns>A Unity coroutine IEnumerator.</returns> /// <param name="url">URL of the server to download the file.</param> public IEnumerator DownloadFile(MoBackFile mobackFile) { if (mobackFile == null) { Debug.LogError("moback file is null"); yield break; } if (string.IsNullOrEmpty(mobackFile.url)) { DisplayMessage("The url is invalid, or the file is already deleted"); yield break; } downloadFileButton.enabled = false; yield return(mobackFile.Download()); if (mobackFile.Status == MoBackRequest.RequestState.ERROR) { Debug.LogError("can't download"); yield break; } // For this demo we will write a downloaded file to persistentDataPath. string writePath = Path.Combine(Application.persistentDataPath, mobackFile.Name); File.WriteAllBytes(writePath, mobackFile.Data); DisplayMessage(string.Format("File Name: {0}. \n Write to path: {1}", mobackFile.Name, writePath)); downloadFileButton.enabled = true; }
/// <summary> /// Deletes the file from the server. /// </summary> /// <returns>A Unity coroutine IEnumerator.</returns> /// <param name="name">Name.</param> public IEnumerator DeleteFile(MoBackFile moBackFile) { if (moBackFile == null) { Debug.LogError("moback file is null"); yield break; } deleteFileButton.enabled = false; MoBackRequest deleteFileRequest = moBackFile.DeleteFile(); yield return(deleteFileRequest.Run()); if (deleteFileRequest.State == MoBackRequest.RequestState.COMPLETED) { // Since we stored the file's url on a row in a table. When delete the file, we need to remove the row as well. DisplayMessage("Delete File Success"); MoBackRequest deleteMoBackObject = moBackFile.DeleteMoBackObject(); yield return(deleteMoBackObject.Run()); if (deleteMoBackObject.State == MoBackRequest.RequestState.COMPLETED) { DisplayMessage("Delete object"); } else if (deleteMoBackObject.State == MoBackRequest.RequestState.ERROR) { deleteFileButton.enabled = true; DisplayMessage("Unable to delete the MoBack row associated with the file: " + moBackFile.Name); } } else if (deleteFileRequest.State == MoBackRequest.RequestState.ERROR) { DisplayMessage("Unable to delete the file: " + moBackFile.Name); } deleteFileButton.enabled = true; }
/// <summary> /// Uploads the file. /// </summary> /// <returns>A Unity coroutine IEnumerator.</returns> /// <param name="name">Name of the file to upload from StreamingAssets folder.</param> public IEnumerator UploadFile(MoBackFile mobackFile) { if (mobackFile == null) { Debug.LogError("moback file is null"); yield break; } // Prevent multiple click while uploading. uploadFileButton.enabled = false; // Run the request. MoBackRequest uploadFileRequest = mobackFile.UploadFile(); yield return(uploadFileRequest.Run()); if (uploadFileRequest.State == MoBackRequest.RequestState.COMPLETED) { // We need to store the file's url (which is received after complete uploading the file) to a row, otherwise, we can't access it. MoBackRequest saveFileToTableRequest = mobackFile.Save(); yield return(saveFileToTableRequest.Run()); if (saveFileToTableRequest.State == MoBackRequest.RequestState.COMPLETED) { DisplayMessage("Finish save file to table"); } else if (saveFileToTableRequest.State == MoBackRequest.RequestState.ERROR) { Debug.LogError("Can't create a new MoBack object on server"); } } else if (uploadFileRequest.State == MoBackRequest.RequestState.ERROR) { Debug.LogError("can't upload file"); } uploadFileButton.enabled = true; }
public static object MoBackTypedObjectFromJSON(SimpleJSONNode node, out MoBackValueType dataType) { if (MoBackAppSettings.doublePrecisionFloatingPoint && node.valueType == typeof(double)) { dataType = MoBackValueType.Number; return(new MoBackNumber(node.AsDouble)); } else if (!MoBackAppSettings.doublePrecisionFloatingPoint && node.valueType == typeof(float)) { dataType = MoBackValueType.Number; return(new MoBackNumber(node.AsFloat)); } else if (node.valueType == typeof(int)) { dataType = MoBackValueType.Number; return(new MoBackNumber(node.AsInt)); } else if (node.valueType == typeof(bool)) { dataType = MoBackValueType.Boolean; return(node.AsBool); } else if (node.valueType == typeof(string)) { dataType = MoBackValueType.String; return(node.Value); } else if (node.valueType == typeof(SimpleJSONClass)) { SimpleJSONClass nestedClass = (SimpleJSONClass)node; if (nestedClass.dict.ContainsKey("__type")) { //is a special type, treat accordingly switch (nestedClass["__type"].Value) { case "Date": dataType = MoBackValueType.Date; return(MoBackDate.DateFromMoBackJSON(node)); case "Pointer": dataType = MoBackValueType.Pointer; return(MoBackPointer.PointerFromMoBackJSON(node)); case "Relation": dataType = MoBackValueType.Relation; return(MoBackRelation.RelationFromMoBackJSON(node)); case "File": dataType = MoBackValueType.File; return(MoBackFile.FromJSON(node)); default: //not familiar with this special type; fall back to parsing as regular object if (MoBack.MoBackAppSettings.loggingLevel >= MoBack.MoBackAppSettings.LoggingLevel.WARNINGS) { Debug.LogWarning("Unrecognized MoBack reserved type '" + nestedClass["__type"] + "'."); } dataType = MoBackValueType.MoBackObject; return(MoBackObject.FromJSON(nestedClass)); } } else { dataType = MoBackValueType.MoBackObject; return(MoBackObject.FromJSON(nestedClass)); } } else if (node.valueType == typeof(SimpleJSONArray)) { dataType = MoBackValueType.Array; return(MoBackArray.FromJSON((SimpleJSONArray)node)); } throw new ArgumentException("JSON data type not supported in some manner.", "SimpleJsonNode node"); }