Example #1
0
    /// <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));
    }
Example #2
0
    /// <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;
    }
Example #3
0
    /// <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;
    }
Example #4
0
    /// <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;
    }
Example #5
0
        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");
        }