Ejemplo n.º 1
0
        // ---------[ UPLOADING ]---------
        public static void SubmitNewMod(EditableModProfile modEdits,
                                        Action <ModProfile> modSubmissionSucceeded,
                                        Action <WebRequestError> modSubmissionFailed)
        {
            Debug.Assert(modEdits.name.isDirty && modEdits.summary.isDirty);
            Debug.Assert(File.Exists(modEdits.logoLocator.value.url));

            // - Initial Mod Submission -
            var parameters = new AddModParameters();

            parameters.name    = modEdits.name.value;
            parameters.summary = modEdits.summary.value;
            parameters.logo    = BinaryUpload.Create(Path.GetFileName(modEdits.logoLocator.value.url),
                                                     File.ReadAllBytes(modEdits.logoLocator.value.url));
            if (modEdits.visibility.isDirty)
            {
                parameters.visibility = modEdits.visibility.value;
            }
            if (modEdits.nameId.isDirty)
            {
                parameters.nameId = modEdits.nameId.value;
            }
            if (modEdits.description.isDirty)
            {
                parameters.description = modEdits.description.value;
            }
            if (modEdits.homepageURL.isDirty)
            {
                parameters.nameId = modEdits.homepageURL.value;
            }
            if (modEdits.metadataBlob.isDirty)
            {
                parameters.metadataBlob = modEdits.metadataBlob.value;
            }
            if (modEdits.nameId.isDirty)
            {
                parameters.nameId = modEdits.nameId.value;
            }
            if (modEdits.tags.isDirty)
            {
                parameters.tags = modEdits.tags.value;
            }

            // NOTE(@jackson): As add Mod takes more parameters than edit,
            //  we can ignore some of the elements in the EditModParameters
            //  when passing to SubmitModProfileComponents
            var remainingModEdits = new EditableModProfile();

            remainingModEdits.youtubeURLs          = modEdits.youtubeURLs;
            remainingModEdits.sketchfabURLs        = modEdits.sketchfabURLs;
            remainingModEdits.galleryImageLocators = modEdits.galleryImageLocators;

            APIClient.AddMod(parameters,
                             result => SubmitModProfileComponents(result,
                                                                  remainingModEdits,
                                                                  modSubmissionSucceeded,
                                                                  modSubmissionFailed),
                             modSubmissionFailed);
        }
        // ---------[ Submission Functions ]---------
        /// <summary>Submits a new mod to the server.</summary>
        public void SubmitNewMod(EditableModProfile newModProfile)
        {
            Debug.Assert(newModProfile != null);

            // - Client-Side error-checking -
            string errorMessage = null;

            if (String.IsNullOrEmpty(newModProfile.name.value))
            {
                errorMessage = "Mod Profile needs to be named before it can be uploaded";
            }
            else if (String.IsNullOrEmpty(newModProfile.summary.value))
            {
                errorMessage = "Mod Profile needs to be given a summary before it can be uploaded";
            }

            // Send data
            if (errorMessage == null)
            {
                // - string params -
                this.addModParams         = new AddModParameters();
                this.addModParams.name    = newModProfile.name.value;
                this.addModParams.summary = newModProfile.summary.value;

                if (newModProfile.visibility.isDirty)
                {
                    this.addModParams.visibility = newModProfile.visibility.value;
                }
                if (newModProfile.nameId.isDirty)
                {
                    this.addModParams.nameId = newModProfile.nameId.value;
                }
                if (newModProfile.descriptionAsHTML.isDirty)
                {
                    this.addModParams.descriptionAsHTML = newModProfile.descriptionAsHTML.value;
                }
                if (newModProfile.homepageURL.isDirty)
                {
                    this.addModParams.nameId = newModProfile.homepageURL.value;
                }
                if (newModProfile.metadataBlob.isDirty)
                {
                    this.addModParams.metadataBlob = newModProfile.metadataBlob.value;
                }
                if (newModProfile.nameId.isDirty)
                {
                    this.addModParams.nameId = newModProfile.nameId.value;
                }
                if (newModProfile.tags.isDirty)
                {
                    this.addModParams.tags = newModProfile.tags.value;
                }

                // - editable params -
                if (newModProfile.youTubeURLs.isDirty ||
                    newModProfile.sketchfabURLs.isDirty ||
                    newModProfile.galleryImageLocators.isDirty)
                {
                    // NOTE(@jackson): As add Mod takes more parameters than edit,
                    //  we can ignore some of the elements in the EditModParameters
                    //  when passing to SubmitModChanges_Internal
                    this.eModProfile                      = new EditableModProfile();
                    this.eModProfile.youTubeURLs          = newModProfile.youTubeURLs;
                    this.eModProfile.sketchfabURLs        = newModProfile.sketchfabURLs;
                    this.eModProfile.galleryImageLocators = newModProfile.galleryImageLocators;
                }

                // - data params -
                DataStorage.ReadFile(newModProfile.logoLocator.value.url, this.SubmitNewMod_OnReadLogo);
            }
            else
            {
                this.SubmissionError_Local(errorMessage);
            }
        }